使用 Access 2010 数据库的 Excel 2010 VBA DAO 查询不起作用
Posted
技术标签:
【中文标题】使用 Access 2010 数据库的 Excel 2010 VBA DAO 查询不起作用【英文标题】:Excel 2010 VBA DAO query with Access 2010 database not working 【发布时间】:2015-02-09 10:07:04 【问题描述】:我在 Excel 2007 中使用以下 vba 代码成功查询 Access 2007 accdb 数据库。学分(摘自 Michael Alexander 的“The Excel® Analyst's Guide to Access”)。但是,当我尝试使用 Access 2010 accdb 数据库对 Excel 2010 进行相同操作时,我遇到了问题。首先系统说DAO.Database没有在Excel 2010 VBA中定义。所以我去了参考资料并勾选了DAO 3.6。接下来系统说它无法识别位于 DBEngine.OpenDatabase("M:\SVRData\Booking 2801_BE.accdb") 的数据库。请帮忙
Sub RunAccessQuery()
'Step 1: Declare your variables
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim i As Integer
'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase("M:\SVRData\Booking 2801_BE.accdb")
Set MyQueryDef = MyDatabase.QueryDefs("Bookings")
'Step 3: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset
'Step 4: Clear previous contents
Sheets("Main").Select
ActiveSheet.Range("A6:K10000").ClearContents
'Step 5: Copy the recordset to Excel
ActiveSheet.Range("A7").CopyFromRecordset MyRecordset
'Step 6: Add column heading names to the spreadsheet
For i = 1 To MyRecordset.Fields.Count
ActiveSheet.Cells(6, i).Value = MyRecordset.Fields(i - 1).Name
Next i
End Sub
【问题讨论】:
不要使用 DAO 3.6 参考 - 使用Microsoft Office 14.0 Access Database Engine
参考。
实际上我最初使用的是 Microsoft Office 14.0 Access 数据库引擎,但我收到此错误:“未定义用户定义类型”。这就是为什么我决定勾选 DAO 3.6 参考。
您的代码使用该 Access 数据库引擎引用集正确编译。
没有。当我编译它突出显示“MyDatabase As DAO.Database”并声明 user defined not defined 。 Microsoft Office 14.0 Access Database Engine 已勾选
我实际上并没有问问题,我只是说它确实编译正确。
【参考方案1】:
DAO 无法识别 accdb。 你可以:
将后端转换为 mdb。 使用 ADO 代替 dao。请注意,如果您仅使用表访问后端,那么转换为 mdb 应该不会造成任何问题。但是,您可能必须创建一个新的 mdb 数据库,然后从 accdb 导入您的后端表。
我发现这种事情令人沮丧,尤其是在部署方面。
【讨论】:
我使用Access 2016,无法通过dao访问accdb。未来是否有游戏改变或 ADO 是唯一的解决方案?它不会将 help 放在前面。以上是关于使用 Access 2010 数据库的 Excel 2010 VBA DAO 查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如果使用默认加密(高安全性)保护密码,是不是无法使用 Excel 访问 Access 2010 数据库?
Access 2010:导入使用 FileDialog 选择的 Excel 文件
将 Excel 中的两列导入现有的 Access2010 表中使用转移电子表格时出错