我正在尝试在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库的参考。
请告诉我需要更改的内容,谢谢!
答案 0 :(得分:2)
Microsoft.Jet.OLEDB.4.0
用于连接旧的Access MDB文件。
如果您要使用ACCDB文件(较新版本),则应使用Microsoft.ACE.OLEDB.12.0
代替。