Excel VBA将记录传输到Access表

时间:2017-09-08 15:28:35

标签: excel excel-vba ms-access vba

我是这个论坛的新手,我希望有人可以帮助我。我会附上我用来参考的代码,顺便提一下,这对我来说一直很有用。

我使用Excel vba将数据从Excel传输到Access表。出于某种原因,代码似乎完全运行直到"使用rs",然后它似乎跳过添加值并直接转到rs.Close。我也没有收到任何错误消息,这对我来说很奇怪。包含代码示例。

如果有人有任何建议,我会非常感激!

Dim db As Database, rs As Recordset, r As Long

'ESTABLISH DATABASE AND TABLE LOCATION - PRODUCTION
'Prod environment location
'Set db = OpenDatabase("C:\!PITF Docs\Forecasting and Planning\Collection\PITF_Collection.accdb")
' open the database
Set db = OpenDatabase("C:\!PITF Docs\Forecasting and Planning\Collection\PITF_Collection.accdb")
Set rs = db.OpenRecordset("Upload_InternalLabor", dbOpenTable)

' get all records in a table
r = 2 ' the start row in the worksheet
Do While Abs(Range("HZ" & r)) > 0
' repeat until first empty cell in column A
    With rs
        .AddNew ' create a new record
        ' add values to each field in the record
        .Fields("Class") = Range("DO" & r).Value
        .Fields("New_Hire") = Range("DP" & r).Value
        .Fields("Name") = Range("DQ" & r).Value
        .Fields("Role") = Range("DR" & r).Value
        .Fields("Expense_Driver") = Range("DS" & r).Value
        .Fields("Comments") = Range("DT" & r).Value
        .Fields("Salary") = Range("DU" & r).Value
        .Fields("Hire_Date") = Range("DV" & r).Value
        .Fields("42741") = Range("DW" & r).Value
        .Fields("42755") = Range("DX" & r).Value
        .Fields("42769") = Range("DY" & r).Value
        .Fields("42783") = Range("DZ" & r).Value

        .Fields("Submitter") = Range("HW" & r).Value
        .Fields("Timestamp") = Range("HX" & r).Value
        .Fields("Total") = Range("HY" & r).Value
        .Fields("Abs") = Range("HZ" & r).Value


        ' add more fields if necessary...
        .Update ' stores the new record
    End With
    r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing

1 个答案:

答案 0 :(得分:0)

只要你的表格按照相同的列顺序设置,如果它只是一次性的话,你可以将它们真正地复制/粘贴。

如果它不是一次性的,但仍然是Access数据库,您可以通过External Data部分链接excel文件,然后根据UPDATEAPPEND查询两个表中都有一些关键。

  1. 在向导中选择File name
  2. 选择Link to the data source by creating a linked table单选按钮
  3. 点击OK
  4. Excel文件链接起来后,您可以像对待任何其他表一样对待它。