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
我已经在 VBA Excel 中编写了这段代码,以将数据备份到从 excel 访问。代码不喜欢我在 for each 循环中编写范围的方式。我还为每个循环尝试了第二个,但这只是重复备份了主页(尽管使用了正确的表名)。
我认为第一种方法很接近,但我不明白 Range 类型的 FullRange 线有什么问题。
编辑:错误是对象变量或未在 FullRange 行上设置块变量
更新 6-18,似乎完整范围应该是表单字符串。我已经编辑了一点,但我现在在 transferspreadsheet 行上遇到的错误是“Microsoft 数据库引擎找不到对象'1301 Array$A$1:J$12'。确保该对象存在并且正确拼写它的名称.
我拿出全量程并输入 page.name,它给了我同样的错误。
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