私はアクセスを使用してExcelシートでデータを再結合する方法を見つけようとしています。私がしようとしているのは、すべて同じフォーマットの複数のExcelファイルを取り出し、それらを連続したテーブルに連結することです。今、私はExcelファイルのディレクトリを介して1つのExcelワークシートを対象にして1つのアクセステーブルに結合することを可能にするVBA機能を持っています。私の質問は、すべてのワークシートのコードを実行したり変更したりするのではなく、ディレクトリ内のすべてのワークシートに対して、どのようにして同じことをすることができるかです。複数のワークシートで同一のExcelファイルをインポートする
TL; DRあなたは100のExcelファイルがあり、それぞれに7つのワークシートがあります。フォーマットは同じですが、データは異なります。どのように私は100のファイルをすべて取って、7つのそれぞれのMS Accessのテーブルにワークシートを組み合わせるのですか?
******問題が解決されました。 (実行するために、イミディエイトウィンドウで次のコマンドを使用します
Public Function importMultipleExcelFiles(Directory As String) As Long
For x = 1 To 7
Dim TableName As String
Dim WkShtName As String
TableName = Choose(x, "Table1", "Table2", "Table3", "Table4")
WkShtName = Choose(x, "Table1!", "Table2!", "Table3!", "Table4!")
Call SingleModule.importExcelSheets(Directory, TableName, WkShtName)
Next x
End Function
:MultipleModuleという名前
Option Compare Database
Public Function importExcelSheets(Directory As String, TableName As String, WkShtName As String) As Long
On Error Resume Next
Dim strDir As String
Dim strFile As String
Dim I As Long
I = 0
If Left(Directory, 1) <> "\" Then
strDir = Directory & "\"
Else
strDir = Directory
End If
strFile = Dir(strDir & "*.XLSX")
While strFile <> ""
I = I + 1
strFile = strDir & strFile
Debug.Print "importing " & strFile
DoCmd.TransferSpreadsheet acImport, , TableName, strFile, True, WkShtName
strFile = Dir()
Wend
importExcelSheets = I
End Function
モジュール2:WORKING CODE ASは
*******モジュール1という名前のSingleModuleをたどります)あなたはファイルパスを変更してください:
? importMultipleExcelFiles("C:\Excel File Directory")
SIDE注:
あなたは、イミディエイトウィンドウでSingleModuleで次のコマンドを使用して1つのワークシートをターゲットにすることができます:
? importExcelSheets("C:\FilePath", "TableName", "WkShtName!")
、ExcelからGoogleのSQL INSERT INTO、何か '...... FROM [エクセル12.0; HDR =はい;データベース= 'C:\ excelsheet.xlsx']。 [Sheet1 $] 'Currentdb.executeまたはdocmd.runsqlを使用して –