我是这个论坛的新手,我希望有人可以帮助我。我会附上我用来参考的代码,顺便提一下,这对我来说一直很有用。
我使用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
答案 0 :(得分:0)
只要你的表格按照相同的列顺序设置,如果它只是一次性的话,你可以将它们真正地复制/粘贴。
如果它不是一次性的,但仍然是Access数据库,您可以通过External Data
部分链接excel文件,然后根据UPDATE
或APPEND
查询两个表中都有一些关键。
File name
Link to the data source by creating a linked table
单选按钮OK
将Excel
文件链接起来后,您可以像对待任何其他表一样对待它。