2015-02-09 177 views
0

我在Excel 2007中使用了以下vba代码以成功查询Access 2007 accdb数据库。信用(摘自Michael Alexander撰写的“Excel®分析员访问指南”)。但是,当我尝试使用Access 2010 accdb数据库的Excel 2010时出现问题。首先,系统表示DAO数据库未在Excel 2010 VBA中定义。所以我去参考并勾选了DAO 3.6。接下来系统表示它无法识别DBEngine.OpenDatabase(“M:\ SVRData \ Booking 2801_BE.accdb”)上的数据库。请帮助Excel 2010 VBA DAO查询与Access 2010数据库不起作用

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 
+0

请勿使用DAO 3.6参考 - 使用“Microsoft Office 14.0 Access数据库引擎”参考。 – Rory 2015-02-09 10:28:01

+0

实际上,我最初使用的是Microsoft Office 14.0 Access数据库引擎,但出现此错误:“用户定义的类型未定义”。这就是为什么我决定打勾DAO 3.6参考。 – hhap 2015-02-09 10:33:31

+0

您的代码使用该Access数据库引擎参考集编译正确。 – Rory 2015-02-09 10:37:25

回答

0

DAO不识别accdb。 您可以:

  • 将后端转换为mdb。
  • 使用ADO代替dao。

请注意,如果您仅使用表格访问后端,那么转换为mdb不应引起任何问题。但是,您可能必须创建新的mdb数据库,然后从accdb中导入后端表。

我觉得这种事情特别在部署方面令人沮丧。