访问accdb文件的数据库连接

时间:2018-03-30 16:24:23

标签: excel vba ms-access

我正在尝试在VBA中运行SQL查询,该查询将使用以下代码将结果打印到Excel工作表:

Sub Select_From_Access()
   Dim cn As Object, rs As Object
   Dim intColIndex As Integer
   Dim DBFullName As String
   Dim TargetRange As Range

   DBFullName = "C:Users\jswizzle\Testdb.accdb"


   Application.ScreenUpdating = False

   Set TargetRange = Sheets("Sheet1").Range("A1")

   Set cn = CreateObject("ADODB.Connection")
   cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName & ";"

   Set rs = CreateObject("ADODB.Recordset")
   rs.Open "SELECT * FROM Region", cn, , , adCmdText

   For intColIndex = 0 To rs.Fields.Count - 1
   TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name
   Next

   TargetRange.Offset(1, 0).CopyFromRecordset rs

   Application.ScreenUpdating = True
   On Error Resume Next
   rs.Close
   Set rs = Nothing
   cn.Close
   Set cn = Nothing
   On Error GoTo 0
   Exit Sub

End Sub

不幸的是我一直收到以下错误:

  

运行时错误' -2147467259(80004005)';

     

无法识别的数据库格式' C:Users \ jswizzle \ Testdb.accdb'。

我用作Microsoft Activex Data Objects 2.8库的参考。

请告诉我需要更改的内容,谢谢!

1 个答案:

答案 0 :(得分:2)

Microsoft.Jet.OLEDB.4.0用于连接旧的Access MDB文件。

如果您要使用ACCDB文件(较新版本),则应使用Microsoft.ACE.OLEDB.12.0代替。