【发布时间】: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 已勾选
-
我实际上并没有问问题,我只是说它确实编译正确。