使用Excel中的VBA在Microsoft Access中打开表
我正在尝试从Microsoft Access加载一个表,并使用VBA将其粘贴到Excel单元格中 我的路径正确地找到了我的.accdb文件,并且在第一个Cellsrow x.Value=语句出现之前不会出错 OpenRecordset方法没有引用一个表,这让我觉得我不应该传入表的名称,或者使用一个完全不同的方法 我收到一个错误:运行时错误“3265”应用程序定义错误或对象定义错误 下面是我的代码:使用Excel中的VBA在Microsoft Access中打开表,vba,excel,Vba,Excel,我正在尝试从Microsoft Access加载一个表,并使用VBA将其粘贴到Excel单元格中 我的路径正确地找到了我的.accdb文件,并且在第一个Cellsrow x.Value=语句出现之前不会出错 OpenRecordset方法没有引用一个表,这让我觉得我不应该传入表的名称,或者使用一个完全不同的方法 我收到一个错误:运行时错误“3265”应用程序定义错误或对象定义错误 下面是我的代码: Sub ImportAccessButton() Dim row As Integer Dim d
Sub ImportAccessButton()
Dim row As Integer
Dim dbPassengerCarMileage As Database
Dim rstPassengerCarMileage As Recordset
row = 3
Set dbPassengerCarMileage = OpenDatabase(ThisWorkbook.Path & "\Cars.accdb")
Set rstPassengerCarMileage = dbPassengerCarMileage.OpenRecordset("Amber")
If Not rstPassengerCarMileage.BOF Then
Do Until rstPassengerCarMileage.EOF
Cells(row, 1).Value = rstPassengerCarMileage!MAKE
Cells(row, 2).Value = rstPassengerCarMileage!Model
Cells(row, 3).Value = rstPassengerCarMileage!VOL
Cells(row, 4).Value = rstPassengerCarMileage!HP
Cells(row, 5).Value = rstPassengerCarMileage!MPG
Cells(row, 6).Value = rstPassengerCarMileage!SP
Cells(row, 7).Value = rstPassengerCarMileage!WT
row = row + 1
rstPassengerCarMileage.MoveNext
Loop
End If
'Close database and Cleanup objects
rstPassengerCarMileage.Close
dbPassengerCarMileage.Close
Set rstPassengerCarMileage = Nothing
Set dbPassengerCarMileage = Nothing
End Sub
它使用ADODB。CopyFromRecordset命令加快了速度
Sub ImportAccessButton()
Dim Rs As Object
Dim strConn As String
Dim i As Integer
Dim Ws As Worksheet
Dim strSQL As String
set Ws = ActiveSheet
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "\Cars.accdb" & ";"
strSQL = "SELECT * FROM Amber"
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open strSQL, strConn
If Not Rs.EOF Then
With Ws
.Range("a2").CurrentRegion.ClearContents
For i = 0 To Rs.Fields.Count - 1
.Cells(2, i + 1).Value = Rs.Fields(i).Name
Next
.Range("a" & 3).CopyFromRecordset Rs
End With
End If
Rs.Close
Set Rs = Nothing
End Sub
哪一行抛出错误?它是循环一次还是不稳定地失败?立即失败,永远不会通过第一个循环上的第一个Cell方法调用。