【问题标题】:Export Excel Range to Access table VBA将 Excel 范围导出到 Access 表 VBA
【发布时间】:2017-11-09 07:16:13
【问题描述】:

我想在 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

【问题讨论】:

  • 您可以从 Access 而不是 Excel 中导入数据吗?如果是这样DoCmd.TransferSpreadsheet 可以做你想做的事,我想
  • 什么是 x?它没有在任何地方初始化。
  • 是的,x 没有初始化或递增。您想填充 13 个字段且仅填充 1 条记录?
  • 是的!从第 7 行开始的一条记录,包含 24 个字段。

标签: ms-access


【解决方案1】:

查看您的子例程,我发现有两件事可能使其无法正常工作:

  • rst(Cells(1, i).Value) = Cells(x, i).Value

  • 只有一个循环在字段上移动,但我认为它应该是 Excel 中行的另一个循环。

通过这两个更改,保存记录时的循环可能会变成这样:

    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

希望对你有帮助。

【讨论】:

  • 您好,谢谢您的回答。我试过你的代码。我能够有一个消息框说“数据已成功发送到访问数据库”,但是当我返回数据库时,那里没有记录。另外,由于 excel 电子表格中的记录从第 7 行开始,我设置了 x=7。 @USeptim
  • 嗨乔安妮。我复制了一个类似的例子(只有三个字段)并且它有效。这些行被添加到 Access 数据库中。我会进行一些控制测试,例如添加一个计数器来记录您的例程处理了多少行,并添加一个显示该数字的消息框或检查主键字段是否已填充......我会测试那种东西......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 2019-03-10
  • 2018-09-13
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多