Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel中的VBA在Microsoft Access中打开表_Vba_Excel - Fatal编程技术网

使用Excel中的VBA在Microsoft Access中打开表

使用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

我正在尝试从Microsoft Access加载一个表,并使用VBA将其粘贴到Excel单元格中

我的路径正确地找到了我的.accdb文件,并且在第一个Cellsrow x.Value=语句出现之前不会出错

OpenRecordset方法没有引用一个表,这让我觉得我不应该传入表的名称,或者使用一个完全不同的方法

我收到一个错误:运行时错误“3265”应用程序定义错误或对象定义错误

下面是我的代码:

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方法调用。