これはかなり単純な作業のようです。あなたが説明したように、各ファイルから同じセル位置を読み取っているため、Excel で非表示のシートを作成するという考えはスキップします。アーキテクチャの観点から、私は LS_Dev に同意します - シンプルにしてください! あなたに必要なのは
- (複数の) Excel ファイルをマークして開くことができる選択メカニズム
- 選択した各 Excel ファイルを開いて読み、必要なデータを選択するルーチン
- そのデータを 1 つ (または複数) の Access テーブルに書き込むコードのブロック
上記の 3 つのすべては、1 つの Access VBA モジュールできちんと実行できます。
広告 1.
Sub XLSProcessMulti()
Dim Idx As Long
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Pick one or more files"
.Filters.Add "Worksheets", "*.xl*", 1
If .Show = -1 Then
For Idx = 1 To .SelectedItems.Count
XLSProcessSingle .SelectedItems(Idx)
Next Idx
End If
End With
End Sub
広告 2。
Sub XLSProcessSingle(FileName As String)
' needs creation of a reference to [Microsoft Excel xx.y Object Library]
Dim WB As Excel.Workbook
Dim Idx As Long
Set WB = Excel.Workbooks.Open(FileName)
' dummy code here just to show a bit how the Excel object can be accessed
Debug.Print WB.Name
For Idx = 1 To WB.Worksheets.Count
Debug.Print WB.Worksheets(Idx).Name
Debug.Print WB.Worksheets(Idx).[A1] ' access a cell by its address enclosed in []
Next Idx
' read sheets, ranges etc. by name or position into local variables
' and store them in Access table(s)
' X = WB.Worksheets(1).[A1] ' by position
' Y = WB.Worksheets("MySecondSheet").[B2] ' by sheet name
' Z = WB.Worksheets(3).Range("MyNamedRange") ' single cell named range
' etc.
WB.Close
End Sub
広告 3.
あなたの番 :)