Ms access 导出Excel范围以访问表VBA

Ms access 导出Excel范围以访问表VBA,ms-access,Ms Access,我想在Excel电子表格上有一个按钮,并将数据复制到Access表中。 范围是同一工作簿中另一工作表中的自动填充字段 我尝试了一些代码来实现这一点,但我要么得到一个错误1004:应用程序定义的或对象定义的错误,要么没有错误,但Access DB中没有复制数据 我的代码复制到下面 Sub Export_Data() Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim dbPath Dim x As

我想在Excel电子表格上有一个按钮,并将数据复制到Access表中。 范围是同一工作簿中另一工作表中的自动填充字段

我尝试了一些代码来实现这一点,但我要么得到一个错误1004:应用程序定义的或对象定义的错误,要么没有错误,但Access DB中没有复制数据

我的代码复制到下面

Sub Export_Data()

    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset 
    Dim dbPath
    Dim x As Long, i As Long

    dbPath = "H:\RFD\RequestForData.accdb"

    Set cnn = New ADODB.Connection

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath

    Set rst = New ADODB.Recordset 'assign memory to the recordset

    rst.Open Source:="tblRequests", ActiveConnection:=cnn, _
             CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
             Options:=adCmdTable

    rst.AddNew
    For i = 1 To 13
        rst(Cells(1, i).Value) = Cells(x, i).Value
    Next i
    rst.Update

    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing

    MsgBox " The data has been successfully sent to the access database"

    Set rst = Nothing
    Set cnn = Nothing

End Sub

看看你的子程序,我发现有两件事会让它无法工作:


  • rst(单元格(1,i).Value)=单元格(x,i).Value您可以从Access而不是Excel导入数据吗?如果是这样的话,
    DoCmd.TransferSpreadsheet
    可以做你想做的事,我想x是什么?它没有在任何地方初始化。是的,x没有初始化或递增。你想填充13个字段,只填充一条记录吗?是的!一条记录从第7行开始,共有24个字段。您好,谢谢您的回答。我已经试过你的代码了。我可以看到一个消息框,上面写着“数据已成功发送到access数据库”,但当我返回数据库时,没有任何记录。另外,由于excel电子表格中的记录从第7行开始,因此我将x设置为7@我叫乔安妮。我复制了一个类似的例子(只有三个字段),它已经起作用了。这些行将添加到Access数据库中。我会进行一些控制测试,例如添加一个计数器,记录例程处理了多少行,并添加一个显示该数字的消息框,或者检查主键字段是否已填充。。。我会测试那种东西。。。
        For x = 1 TO lastRow   ' Last row has to be calculated somehow
            rst.AddNew
            For i = 1 To 13
                rst(Cells(1, i).Value) = Cells(x, i).Value
            Next i
            rst.Update
        Next x