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
Excel からのアクセスにデータをバックアップするために、VBA Excel でこのコードを記述しました。このコードは、for each ループで範囲を記述した方法が好きではありません。2番目のfor eachループも試しましたが、メインページを繰り返しバックアップしました(ただし、正しいテーブル名を使用)。
1つめの方法は近いと思いますが、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