[英]How to retrieve data from access database(.accdb) into excel using vba
我正在處理 Excel VBA 宏,我想從 MS Access 數據庫( .accdb
文件)中檢索數據。
我試過使用下面的連接字符串,它拋出運行時錯誤“438”
Dim cn As Object, rs As Object,DBFullName As String,Target As Range
DBFullName = "D:\Tool_Database\Tool_Database.accdb"
Set Target = Sheets("Sheet1").Range("A1")
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & DBFullName & ";"
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM test", cn, , , adCmdText
For int i = 0 To rs.Fields.Count - 1
Target.Offset(1, i).Value = rs.Fields(i).Name
Next
Target.Offset(1, 0).CopyFromRecordset rs
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
請幫我解決錯誤
我試過使用下面的連接字符串,它拋出運行時錯誤“438”
Run-time error: '438'
表示Object doesn't support this property or method..
您收到該錯誤是因為您將VB.Net
與VBA
混合使用
這
For int i = 0 To rs.Fields.Count - 1
應該是
For i = 0 To rs.Fields.Count - 1
除了上述內容,我猜DBFullName = "D:\\Tool_Database\\Tool_Database.mdb"
是您使用.Accdb
的拼寫錯誤?
這應該為你做。 如果您不想應用過濾器,請刪除 WHERE 子句。
另外,設置對:Microsoft ActiveX Data Objects 2.8 Library 的引用
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\Ryan\Desktop\Nwind_Sample.mdb"
'On Error GoTo Whoa
Application.ScreenUpdating = False
Set TargetRange = Sheets("Select").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 [OrderDetails] WHERE [OrderID] = 10248", cn, , , adCmdText
' Write the field names
For intColIndex = 0 To rs.Fields.Count - 1
TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name
Next
' Write recordset
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.