在DoCmd.TransferSpreadSheet中正确设置范围(Excel中的VBA Access)?

在DoCmd.TransferSpreadSheet中正确设置范围(Excel中的VBA Access)?,excel,vba,ms-access,backup,data-transfer,Excel,Vba,Ms Access,Backup,Data Transfer,我在VBA Excel中编写了此代码,用于将数据从Excel备份到access中。代码不喜欢我在for-each循环中编写范围的方式。我还尝试了第二个for each循环,但这只是重复备份主页面(尽管使用了正确的表名) 我认为第一条路很近,但我不明白全量程线路有什么问题,它是全量程的 编辑:错误为对象变量或未在全范围行上设置块变量 更新6-18,似乎完整范围应该是字符串形式。我已经编辑了一点,但我现在在transferspreadsheet行上遇到的错误是“Microsoft数据库引擎找不到对象

我在VBA Excel中编写了此代码,用于将数据从Excel备份到access中。代码不喜欢我在for-each循环中编写范围的方式。我还尝试了第二个for each循环,但这只是重复备份主页面(尽管使用了正确的表名)

我认为第一条路很近,但我不明白全量程线路有什么问题,它是全量程的

编辑:错误为对象变量或未在全范围行上设置块变量

更新6-18,似乎完整范围应该是字符串形式。我已经编辑了一点,但我现在在transferspreadsheet行上遇到的错误是“Microsoft数据库引擎找不到对象的1301数组$a$1:J$12”。请确保该对象存在并且拼写正确

我取出了fullrange并放入page.name,它给了我同样的错误

For Each Page In Worksheets
    PageName = Split(Page.Name, " ")
    If UBound(PageName) > 0 Then
        Worksheets(Page.Name).Activate
        lRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
        LCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
        Fullrange = Worksheets(Page.Name).Range(Worksheets(Page.Name).Cells(1, 1), _
            Worksheets(Page.Name).Cells(lRow, LCol))
        accappl.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
            Page.Name, strpathxls, True, Fullrange
    End If
Next

我对你的代码做了一些修改,看看你能不能看出哪里出了问题

For Each Page In Worksheets
    PageName = Split(Page.Name, " ")
    If UBound(PageName) > 0 Then
        ' Worksheets(Page.Name).Activate - this line is most likely not needed
        lRow = Page.Range("A" & Rows.Count).End(xlUp).Row
        LCol = Page.Cells(2, Columns.Count).End(xlToLeft).Column
        fullRange = Page.Name & Page.Range(Page.Cells(1, 1), _
            Page.Cells(lRow, LCol)).Address
        accappl.DoCmd.TransferSpreadsheet acImport, _
            acSpreadsheetTypeExcel12Xml, Page.Name, strpathxls, True, Page.Name
    End If
Next  

这是一些工作代码,由于某些原因,范围中必须有一个

Dim Page As Worksheet
Dim lRow As Long, LCol As Long
Dim fullRange As Range
Dim PageName As Variant

For Each Page In Worksheets

    PageName = Split(Page.Name, " ")

    If UBound(PageName) > 0 Then
        ' Worksheets(Page.Name).Activate - this line is most likely not needed
        lRow = Page.Range("A" & Rows.Count).End(xlUp).Row
        LCol = Page.Cells(1, Columns.Count).End(xlToLeft).Column
        Set fullRange = Page.Range(Cells(1, 1), Cells(lRow, LCol))
        accappl.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, Page.Name, strpathxls, True, fullRange
    End If
Next

我将dim pagename下的fullrange注释为variant,因为我需要更新。for each循环中的fullrange给了我range方法failed error。我做了一些更改,现在出现了与以前相同的错误。嗯…尝试使用
设置fullrange
我进行了一个小更新。结果表明fullrange必须是一个字符串,但因为我需要a无论如何,整个工作表我将accpl.docmd行中的范围替换为页面名称,给出了更新6-18,似乎完整范围应为表单字符串。我已经编辑了一点,但我现在在transferspreadsheet行上遇到的错误是“Microsoft数据库引擎找不到对象的1301数组$a$1:J$12”。确保对象存在并且拼写正确。
Range(“A1:A50”)。Address
返回该范围的字符串表示形式
  Sub BU_ACCESS()

Dim accappl As Access.Application
Dim strpathdb As String
Dim strpathxls As String
'Dim myrange As String, myrow1 As String, myrow2 As String
'Dim fullRange As Range



strpathdb = "C:\Users\tgfesaha\Desktop\Database1.accdb"
'path to the upload file

strpathxls = ActiveWorkbook.FullName




Set accappl = New Access.Application

accappl.OpenCurrentDatabase strpathdb
Dim Page As Worksheet
Dim lRow As Long, LCol As Long
Dim fullrange As String
Dim PageName As Variant
'fullRange = Worksheets(Page.Name).Range(Worksheets(Page.Name).Cells(1, 1), Worksheets(Page.Name).Cells(lRow, LCol))

For Each Page In Worksheets

    PageName = Split(Page.Name, " ")

    If UBound(PageName) > 0 Then
        ' Worksheets(Page.Name).Activate - this line is most likely not needed
        lRow = Page.Range("A" & Rows.Count).End(xlUp).Row
        LCol = Page.Cells(2, Columns.Count).End(xlToLeft).Column
        fullrange = Page.Range(Page.Cells(1, 1), Page.Cells(lRow, LCol)).Address
        xclam = Page.Name & "!" & fullranges

        accappl.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, Page.Name, strpathxls, True, xclam
    End If
Next

accappl.Quit

End Sub