【发布时间】: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