2,使用微软Excel驱动将Excel文件作为ODBC源(命名为MyExcelDS),此处有单独另一篇文章介绍。
3,打开一个新的excel文件,你将从 "DB Data.xlsx "中获取数据。
4,打开VB编辑器
5,创建一个 "ADODB.Connection "对象
6,打开连接并提供与步骤2中提供的相同的DSN名称(在本例中是 "MyExcelDS")。
7,编写获取数据的查询,提供 "DB Data.xlsx "中的表名作为范围。
8,执行查询并将结果存储在resultSet中。
9,从结果集中读取数据并显示在新创建的Excel中,关闭结果集。
10,可以将此VBA函数指定一个按键,方便执行。
Excel中的数据输入如下:
然后我们打开一个Excel文件,Alt+F11呼出VBE编辑器,Insert一个module,然后输入下面代码:
Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.Open "DSN=MyExcelDS"
strQuery = "SELECT * FROM [Sheet1$A1:Z500] where Dept = ‘IT’"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
mainWorkBook.Sheets("Sheet2").Range("A" &intRowCounter).Value = resultSet.Fields("Emp Id").Value
mainWorkBook.Sheets("Sheet2").Range("B" &intRowCounter).Value = resultSet.Fields("Name").Value
mainWorkBook.Sheets("Sheet2").Range("C" &intRowCounter).Value = resultSet.Fields("Age").Value
mainWorkBook.Sheets("Sheet2").Range("D" &intRowCounter).Value = resultSet.Fields("Dept").Value
intRowCounter = intRowCounter + 1
resultSet.movenext
Loop
resultSet.Close
End Sub
用这些代码,用来使用VBA创建一个ADO数据库连接,访问我们使用Excel文件定义的ODBC数据源。
在日常生活中,通常有很多表格文件用Excel存放,访问Excel表格的方法很多,在Delphi中可以通过Servers中的ExcelApplication,ExcelWorkBook,ExcelWorkSheet等控件 *** 纵Excel中的数据.但是我们无法用ADO *** 纵Excel文件中的Sheet,ADO控件会告诉你"[microsoft][OdbC Excel driver]Microsoft Jet 数据库引擎找不到对象'Sheet1'.请确定对象是否存在,并正确地写出它的名称和路径.那么如何才能正确的 *** 纵Excel呢???
首先用ADO连接Excel,至于怎么连接Excel我想不用我说了吧.
然后这个是个关键:打开Excel,先"插入"->"名称"->"定义",如图:
输入一个名称,如:OK,按"添加"按钮,然后指定引用位置,如图:
最后按"确定",然后存盘,这关键的一步就算完成了.
现在你在Delphi中就可以通过ADOQuery或ADOTable等自由 *** 纵表名为"OK"的表了.
注意:1.你可以在一个Excel文件中定义多个名称,当多个表使用
2.此方法不能用于Excel中的Chart等元素
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)