次のコードを使用すると、複数の異なるexcelファイルを参照して、それらを1枚のシートの下に貼り付けることができます。excelファイルの列名は同じですが、データが異なり、正常に機能しています。問題は、必要なときに必要になることです。ファイルを貼り付ける貼り付けるファイルごとにそのファイルの名前を書き込む必要があります。私のexcelファイルの名前はFamilycarと呼ばれ、他のexcelのファイル名はsmartcarと呼ばれます。
例
eg1 CarName、Fuel、Colour
BMW、ガソリン、赤
フォード、ディーゼル、グリーン
マツダ、ガソリン、グレー
eg2 CarName、Fuel、Colour
オースティン、ガソリン、ブルー
VW、ディーゼル、ホワイト
アウディ、ガソリン、ブラック
結果
CarName、Fuel、Colour、FileName
BMW、ガソリン、赤、ファミリーカー
フォード、ディーゼル、グリーン、ファミリーカー
マツダ、ガソリン、グレー、ファミリーカー
オースティン、ガソリン、青、smatrtcar
VW、ディーゼル、ホワイト、スマートカー
アウディ、ガソリン、ブラック、スマートカー
Sub Button5_Click()
Dim fileStr As Variant
Dim wbk1 As Workbook, wbk2 As Workbook
Dim ws1 As Worksheet
fileStr = Application.GetOpenFilename(FileFilter:="microsoft excel files (*.xlsx), *.xlsx", Title:="Get File", MultiSelect:=True)
Set wbk1 = ActiveWorkbook
Set ws1 = wbk1.Sheets("Sheet3")
'handling first file seperately
MsgBox fileStr(1), , GetFileName(CStr(fileStr(1)))
Set wbk2 = Workbooks.Open(fileStr(1))
wbk2.Sheets(1).UsedRange.Copy ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1)
wbk2.Close
For i = 2 To UBound(fileStr)
MsgBox fileStr(i), , GetFileName(CStr(fileStr(i)))
Set wbk2 = Workbooks.Open(fileStr(i))
wbk2.Sheets(1).UsedRange.Offset(1, 0).Copy ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1)
wbk2.Close
Next i