【ExcelVBA】複数Excelファイルデータを1シートにまとめて取り込む方法(Excelマクロ)

10月 23, 2024

※当ブログではリンク先にプロモーションを含みます。

【ExcelVBA】複数Excelファイルデータを1シートにまとめて取り込む方法

ExcelVBAで複数Excelファイルデータを1シートにまとめて取り込みたい人向けに書いています。

Excelファイルがいくつも散らかっていて、「一つ一つ開いてデータをまとめるなんて、正直しんどい…」と感じたことはありませんか? 業務の効率化を目指している方なら、一度はこのような悩みにぶつかるはずです。 大量のデータ管理が必要なとき、Excel VBA(Visual Basic for Applications)を使えば、複数のExcelファイルをワンクリックで1つのシートにまとめることができます。

本記事では、シンプルでわかりやすいVBAの活用法を紹介し、多くの読者から「業務が劇的にスムーズになった」という声をいただいています。
今回の記事では、初心者でも安心して使えるコード例とステップバイステップの手順を解説します。

この記事を読むことで、面倒なデータの統合作業を効率化し、手間を大幅に削減する方法を身につけることができます。
さらに、VBAの基礎も学べるので、今後の業務にも応用できるでしょう。

最後には、Excel作業が驚くほど効率化される結果を手に入れ、仕事の負担を減らせます。
さあ、一緒に作業効率をアップさせる方法を学んでいきましょう!

本記事の内容

・ExcelVBAで複数Excelファイルデータを1シートにまとめて取り込む方法

ExcelVBA(マクロ)で複数あるExcelファイルデータを読み取って1つのシートにまとめたいと思ったことはありませんか?
複数のExcelから1つのExcelファイルにデータをまとめる業務を楽にしたいと思っていませんか?
ExcelVBAで複数Excelファイルデータを1シートにまとめて取り込む方法を紹介します。

ExcelVBA(マクロ)で複数Excelファイルデータを1シートにまとめて取り込む方法

本記事ではFileSystemオブジェクトを使用します。
FileSystemオブジェクトには「Microsoft Scripting Runtime」の参照設定が必要です。
以下が「Microsoft Scripting Runtime」の参照設定方法とプログラムです。

ExcelVBA参照設定

本方法では以下のVBAの参照設定が必要になります。
①メニュータブの「ツール」をクリックし、参照設定をクリックする
参照設定クリック
 
②「Microsoft Scripting Runtime」をチェックする
「Microsoft Scripting Runtime」をチェック
 
③OKボタンをクリックする
OKボタンクリック
 

複数Excelファイルデータを1シートにまとめるVBA(マクロ)プログラム

以下がExcelVBAで複数Excelファイルデータを1シートにまとめて取り込むプログラムです。
取り込む対象の複数Exxcelファイルが1つのフォルダ内にある想定で書かれたプログラムになっています。

  1. '*****************************************
  2. '* 複数Excelファイルデータを1シートにまとめる
  3. '*****************************************
  4. Sub EXCEL_FILE_DETA_INPUT()
  5.     Dim i As Long '行カウント
  6.     Dim fso As FileSystemObject 'FileSystemオブジェクト
  7.     Dim targetfolder As Folder 'Folderオブジェクト
  8.     Dim targetfile As File 'Fileオブジェクト
  9.     Dim targetfolderpass As String '取り込み対象フォルダパス
  10.     Dim targetwb As Workbook '取り込みワークブック
  11.     Dim targetws As Worksheet '取り込みワークシート
  12.     Dim targetstartrrow As String '取り込み開始始行
  13.     Dim targetmax As Long '取り込みデータ最終行
  14.     Dim max As Long '出力シート最終行
  15.     Dim outsheet As String '出力シート
  16.     
  17.     '出力シート
  18.     outsheet = "Sheet3"
  19.     
  20.     '取り込み対象フォルダパス
  21.     targetfolderpass = "C:\仮想Dドライブ\ExcelData"
  22.     
  23.     '取り込み開始始行
  24.     targetstartrrow = 2
  25.     
  26.     With ThisWorkbook
  27.         '取り込みシート初期設定
  28.         .Sheets(outsheet).Cells.ClearContents
  29.        
  30.         'FileSystemObjectの設定
  31.         Set fso = New FileSystemObject
  32.         '取込Excel対象フォルダを取得
  33.         Set targetfolder = fso.GetFolder(targetfolderpass)
  34.         
  35.         '対象フォルダ内の全ファイルを処理
  36.         For Each targetfile In targetfolder.Files
  37.             
  38.             '拡張子が「xlsx」のファイルのみを処理
  39.             If fso.GetExtensionName(targetfile) = "xlsx" Then
  40.                
  41.                 'フォルダ内のエクセルを開いてシートを設定
  42.                 Set targetwb = Workbooks.Open(fileName:=targetfile)
  43.                 Set targetws = targetwb.Worksheets(1)
  44.                
  45.                '開いたエクセルの項目取得
  46.                 targetws.Rows(1).Copy .Sheets(outsheet).Range("A" & targetstartrrow - 1)
  47.                
  48.                 '開いたエクセルの最終行を取得
  49.                 targetmax = targetws.Cells(1, 1).End(xlDown).Row
  50.                
  51.                 '開いたエクセルのデータを転記
  52.                 For i = targetstartrrow To targetmax
  53.                    
  54.                     '取り込みシート最終行取得
  55.                     max = .Sheets(outsheet).Range("A1048576").End(xlUp).Row
  56.                     
  57.                     'データ転記
  58.                     targetws.Rows(i).Copy .Sheets(outsheet).Range("A" & max + 1)
  59.                     
  60.                 Next
  61.                 
  62.                 'エクセルを閉じる
  63.                 targetwb.Close
  64.                
  65.                 'オブジェクト解放
  66.                 Set targetws = Nothing
  67.                 Set targetwb = Nothing
  68.             End If
  69.         Next
  70.     End With
  71.      'エクセルを保存
  72.      ThisWorkbook.Save
  73.     
  74.      'オブジェクト解放
  75.      Set targetfolder = Nothing
  76.      Set fso = Nothing
  77.      
  78. End Sub


18行目:出力力シートを設定
21行目:取り込むファイルのあるフォルダパスを設定
24行目:取り込むファイルの取り込み開始行を設定
45行目:取り込みシート番号を指定
 

まとめ

複数のExcelファイルを手動でまとめる作業は、時間も手間もかかり、正直うんざりしますよね。
でも、VBAを使えばその煩わしさから解放され、効率的なデータ管理が実現します。

今回の記事では、Excel VBAを使って複数のExcelファイルのデータを1つのシートに自動でまとめる方法をお伝えしました。
複数のExcelファイルを1つのシートにまとめる際に役に立つはずです。
具体的なコード例と手順を参考にすれば、初心者でも迷わず実践できます。

最後に重要なのは、「ツールを賢く使って業務を効率化すること」。今日学んだことを活用して、これからのExcel作業をもっとスマートにこなしましょう。
VBAがあなたの頼れる味方になり、仕事の時間が大幅に短縮されることを願っています!
最後までご覧いただき、ありがとうございました。

 

定期的に自動実行したい方は以下のリンクで定期自動実行方法を紹介していますので、ご覧ください。
→「ExcelVBA(マクロ)定期自動実行方法【batファイル VBScriptファイル タスクスケジューラ】


→「AccessVBA定期自動実行方法【batファイル vbsファイル タスクスケジューラ】

 

【ExcelVBA】Excelシートを上部から可変的に最終行まで順次処理する方法
【ExcelVBA】CSVデータ取り込み方法(0頭の数字文字列対応)
【ExcelVBA】別Excelファイルのシートデータ取り込み方法(複数ファイル・シート対応)
も紹介していますので、もしよろしければこちらも御覧ください。

 

ChatGPTをプログラミングの調べものに活用いただければと思います。対話型のAIチャットツールです。
プログラミングのわからないことや質問を入力すると回答を返してくれます。
【ChatGPT】始め方・登録(アカウント作成)方法、ログイン方法を解説

 

¥1,604 (2024/11/19 08:45時点 | Amazon調べ)