采用Microsoft于2020/8/11新出的
AccessDataBaseEngine(
Microsoft Access 2016 数据库引擎可再发行程序包)在VBA中读取Excel内容。
AccessDataBaseEngine安装
如何选择安装32位或64位AccessDataBaseEngine?打开Excel,点击文件 > 账户 > 关于Excel 查看。下载AccessDataBaseEngine并安装。AccessDataBaseEngine资源、及详细安装信息参见Microsoft官网。
Excel内容读取
- 打开Excel保存格式选择为xlsm,Alt + F11打开VBA,新建模块(Module)。
- 点击工具 > 插入 > 引用,找到Microsoft ActiveX Data Objects 6.1,目的使代码编写时有题词功能,当然CreateObject方法也可以使用。
Public Sub ExcelReader
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim path As String
Dim row As Integer
'被读取的Excel文件路径
path = Environ("userprofile") & "\Desktop\InputExcel.xlsx"
cnn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & path
'可在"$"后添加具体读取范围
'例如"SELECT * FROM [Sheet1$A1:Y180]"
Set rst = cnn.Execute("SELECT * FROM [Sheet1$]")
'显示列名(读取范围的第一行)
row = 1
For i = 1 To rst.Fields.Count
Cells(row, i) = rst(i - 1).Name
Next
'显示所有数据
While Not rst.EOF
row = row + 1
For i = 1 To rst.Fields.Count
Cells(row, i) = rst(i - 1)
Next
rst.MoveNext
Wend
rst.Close
cnn.Close
End Sub
最后回到刚保存的xlsm文件调用VBA,点击开发工具 > 宏 > 选择ExcelReader > 执行(没有开发工具选项可在文件 > 选项 > 自定义功能区 > 勾选开发工具 > 确定)。或者插入按钮绑定事件,点击即可。