【问题标题】:Access Database connection for accdb file访问 accdb 文件的数据库连接
【发布时间】:2018-03-30 16:24:23
【问题描述】:

我正在尝试在 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 数据对象 2.8 库作为参考。

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

【问题讨论】:

  • 尝试使用Microsoft.ACE.OLEDB.12.0 代替 Jet 4.0

标签: excel vba ms-access


【解决方案1】:

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

如果您要使用 ACCDB 文件(较新版本),那么您应该改用 Microsoft.ACE.OLEDB.12.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多