尝试将大量行从Excel追加到Access时发生VBA循环问题

时间:2017-06-19 21:25:01

标签: excel-vba vba excel

我一整天都在努力解决这个问题。我希望我只是遗漏一些简单的东西。 背景... 我有一个包含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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

Fields集合从零开始,因此请尝试oRS.Fields(j - 1)而不是oRS.Fields(j)

您所拥有的六个字段通过Fields(0)Fields(5)引用。尝试访问Fields(6)会导致错误