vba用ado读取excelnull问题

vba用ado读取excelnull问题,第1张

1,在你的Excel文件中存储数据,并将其保存在系统中的某个位置,例如 "DB Data.xlsx"

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等元素


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6704965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存