使用 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 表中使用转移电子表格时出错

怎样把access里面的上百万的数据导出到excel里面来?我现在是2010office。

access 2010,语文

自动将不同的 Excel 文件导入 MS Access 2010 表