【ExcelVBA】別Excelファイルのシートデータ取り込み方法(複数ファイル・シート対応)
ExcelVBAで別のExcelファイルからシートデータを取得したい人向けに書いています。
本記事の内容
ExcelVBAで別のExcelファイルからシートデータを取得したいと思ったことはありませんか?
ExcelVBAでの別のExcelファイルからシートデータを取得する方法を紹介します。
ExcelVBAでの別のExcelファイルからシートデータを取得するプログラム
以下が別のExcelファイルからシートデータを取得するプログラムです。
本プログラムではインプットExcelが保存されているフォルダを指定して対象フォルダに入っているファイルすべてを処理します。
ExcelVBA(アウトプット)ファイルにもしインプットファイルと同じシートがあった場合はExcelVBAファイルの同名のシートを削除して取り込みます。
取り込んだシートはシート末尾に取り込まれていきます。
- '*****************************************
- '* Excelデータ取り込み
- '*****************************************
- Sub EXCEL_DATA_GET()
- Dim Input_Path As String 'インプットExcelファイルフォルダ
- Dim buf As String '格納ファイル
- Dim InputBook As Workbook 'インプットExcelブック
- Dim InputSheet As Worksheet 'インプットExcelシート
- Dim SaveDir As String 'インプットExcelファイルパス
- Dim InputWs As Worksheet 'インプットシート
- Dim OutputWs As Worksheet 'アウトプットシート
-
- 'インプットExcelフォルダ取得
- Input_Path = ThisWorkbook.Path & "\バックアップ\"
-
- 'インプット対象ファイルを格納
- buf = Dir(Input_Path & "*.xlsm")
-
- 'インプットExcelシート取得
- Do While buf <> "" 'インプット対象ファイルがなくなるまで処理する
-
- 'インプットファイルオープン
- Set InputBook = Workbooks.Open(Input_Path + buf)
-
- 'アウトプットファイルに同じシートめがある場合シート削除
- For Each InputWs In InputBook.Worksheets
-
- For Each OutputWs In ThisWorkbook.Sheets
-
- If OutputWs.Name = InputWs.Name Then
-
- Application.DisplayAlerts = False
- OutputWs.Delete
- Application.DisplayAlerts = True
-
- End If
-
- Next OutputWs
-
- 'シート取得
- InputWs.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'Beforeの場合、指定したシートの前に
- Next InputWs
-
- 'インプットExcelブックを閉じる
- InputBook.Close False
-
- '次のファイル名を格納
- buf = Dir()
-
- Loop
-
- End Sub
14行目:インプットするExcelファイルが入っているフォルダを設定
17行目:インプットするExcelファイルの対象拡張子を設定
まとめ
ExcelVBAでの別のExcelファイルからシートのデータを取得する方法を紹介しました。
最後までご覧いただき、ありがとうございました。
「【ExcelVBA】CSVデータ取り込み方法(0頭の数字文字列対応)」
「【ExcelVBA】Excelシートを上部から順次処理する方法」
「【ExcelVBA】複数Excelファイルデータを1シートにまとめて取り込む方法」
も紹介していますので、もしよろしければこちらも御覧ください。
最近のコメント