Access 2010数据库的Excel 2010 VBA DAO查询无法正常工作

时间:2015-02-09 10:07:04

标签: excel-vba vba excel

我在Excel 2007中使用以下vba代码成功查询Access 2007 accdb数据库。信用(摘自Michael Alexander的“Excel®分析师访问指南”)。但是,当我使用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

1 个答案:

答案 0 :(得分:0)

DAO无法识别accdb。 你可以:

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

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

我发现这种事情令人沮丧,特别是在部署方面。