我一整天都在努力解决这个问题。我希望我只是遗漏一些简单的东西。 背景... 我有一个包含6列和258行的Excel工作表。我需要用户能够按下按钮并将所有数据附加到Access中的表。我可以为一行数据执行此操作,但我在获取多行时遇到问题。
一切都适用于For循环。它会循环遍历所有列,但是当它到达第7列时会抛出错误。它应循环6次然后转到下一行。我得到的错误是运行时错误3265,此集合中找不到项目。我猜这是因为没有7列。我错过了什么?
Sub ExportResponses()
Dim oSelect As Range
Dim i As Long
Dim j As Integer
Worksheets("Responses").Activate
'目前要求验证范围,但我想编写代码,因为它始终是相同的。 设置oSelect = Application.InputBox(" Range" ,, Range(" A1")。CurrentRegion.Address ,,,,, 8)
Dim oDAO As DAO.DBEngine
Dim oWS As DAO.Workspace
Dim oDB As DAO.Database
Dim oRS As DAO.Recordset
ChDir ActiveWorkbook.Path
Set oDAO = New DAO.DBEngine
Set oWS = DBEngine.Workspaces(0)
Set oDB = oWS.OpenDatabase("T:\Databases\QA Database\QA Data.accdb")
Set oRS = oDB.OpenRecordset("tblResponses_Temp")
For i = 2 To oSelect.Rows.Count
oRS.AddNew
For j = 1 To oSelect.Columns.Count
oRS.Fields(j) = oSelect.Cells(i, j)
Next j
oRS.Update
Next I
oDB.Close
End Sub
非常感谢任何帮助。
答案 0 :(得分:1)
Fields
集合从零开始,因此请尝试oRS.Fields(j - 1)
而不是oRS.Fields(j)
您所拥有的六个字段通过Fields(0)
到Fields(5)
引用。尝试访问Fields(6)
会导致错误