大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、月ごとのブックを1つにまとめるには、Dir関数とCopyを使うとできます。実務では、複数ブックに保存されたデータを1つにまとめて、データを解析したり、加工、編集したいといった場面があるかと思います。複数ブックを1つにまとめる方法について、マスターしていきましょう。

はじめに

この記事では、月ごとのブックを1つにまとめる方法について、ご紹介しました。

月ごとのブックを1つにまとめるには、Dir関数を使ってすべてのブック名を取得して、「Copy」を使ってデータを取得するとできます。

1つのブックにデータをまとめることができれば、データの加工や編集、解析が簡単になります。

複数ブックのデータをまとめる方法について、マスターしていきましょう。

では、月ごとのブックを1つにまとめる方法について、解説していきます。

この記事を読むメリット

  • 月ごとに保存された複数ブックのデータを、1つのブックにまとめることができるようになります。

本記事の内容を動画でまとめています。

本記事の内容を動画でまとめています。

VBAコードの作成手順について、動画で確認することができます。

目次から見たい項目へ移動すると便利ですよ。

目次

月ごとのブックを1つにまとめたい

やりたい内容は、月ごとに保存された複数ブックを、1つのブックにまとめたいということになります。

やりたい内容

月ごとのデータを、1つのブックにまとめるVBAコードを作成していきます。

月ごとのデータを1つのブックにまとめたい

月ごとのブックをまとめたいです。

月ごとのブックをまとめたいです

2022年1月のデータはこんな感じです。

1月のデータはこんな感じです

2022年12月のデータまでを、作成しています。

12月のデータはこんな感じです

月ごとにデータを、1つのブックにまとめていきます。

1つのブックにまとめたい

次の1つのブックにまとめます。

1つのブックにまとめます

実行すると、月ごとのデータを、1つのブックにまとめることができます。

月ごとのデータを、1つのブックにまとめることができます

月ごとのデータを、1つのブックにまとめることができました。

では、月ごとのブックを1つにまとめるVBAコードについて、段階的に作成していきます。

VBAコードを作成

月ごとのブックを1つにまとめるVBAコードを作成していきます。

ブックを開く

まずは、別ブックを開くVBAコードになります。

Sub TEST1()
  
  Dim A
  'ファイルパスを指定
  A = ThisWorkbook.Path & "\TEST\2022年1月.xlsx"
  
  'ブックを開く
  Workbooks.Open A
  
End Sub

別ブックを開くことができます。

別ブックを開く

別ブックを開くことができます

別ブックを開くことができました。

ブックを開いて値を取得

ブックを開いて、データ部分の値を取得してみます。

Sub TEST2()
  
  Dim A
  'ファイルパスを指定
  A = ThisWorkbook.Path & "\TEST\2022年1月.xlsx"
  
  'ブックを開く
  Workbooks.Open A
  
  Dim B
  '貼り付け先
  Set B = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp)
  'データを取得
  With ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion
    .Resize(.Rows.Count - 1).Offset(1, 0).Copy B.Offset(1, 0)
  End With
  'ブックを閉じる
  ActiveWorkbook.Close False
  
End Sub

「1月」のデータを開いて、データを取得できます。

「1月」のデータを取得

「1月」のデータを開いて、データを取得できます

「1月」のデータを開いて、データを取得できました。

Dirでブック名を取得して値を取得

次は、Dir関数を使って、フォルダ内の「いずれか1つ」のブック名を取得して、値を取得してみます。

Sub TEST3()
  
  Dim A
  'フォルダ内のファイル名を1つ取得
  A = Dir(ThisWorkbook.Path & "\TEST\*")
  
  'ブックを開く
  Workbooks.Open ThisWorkbook.Path & "\TEST\" & A
  
  Dim B
  '貼り付け先
  Set B = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp)
  'データを取得
  With ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion
    .Resize(.Rows.Count - 1).Offset(1, 0).Copy B.Offset(1, 0)
  End With
  'ブックを閉じる
  ActiveWorkbook.Close False
  
End Sub

Dir関数で、フォルダ内のいずれかのブック名を取得できます。

Dir関数で、1つのブック名を取得

Dir関数で、フォルダ内のいずれかのブック名を取得します

取得したブック名を使って、ブックのデータを取得できます。

1つのブックのデータを取得

取得したブック名を使って、ブックのデータを取得できます

取得したブック名を使って、ブックのデータを取得できました。

Dirでループして月ごとのブックをまとめる

次は、Dir関数をループして、月ごとの複数ブックのデータをまとめてみます。

Sub TEST4()
  
  Dim A
  'フォルダ内のファイル名を1つ取得
  A = Dir(ThisWorkbook.Path & "\TEST\*")
  
  Do While A <> ""
    
    'ブックを開く
    Workbooks.Open ThisWorkbook.Path & "\TEST\" & A
    
    Dim B
    '貼り付け先
    Set B = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp)
    'データを取得
    With ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion
      .Resize(.Rows.Count - 1).Offset(1, 0).Copy B.Offset(1, 0)
    End With
    'ブックを閉じる
    ActiveWorkbook.Close False
    
    '次のファイル名に移動
    A = Dir()
    
  Loop
  
End Sub

Dir関数をループすることで、フォルダ内のすべてのブック名を取得します。

Dir関数ですべてのブック名を取得

Dir関数を使って、フォルダ内のすべてのブック名を取得します

さらに実行すると、取得したブック名を使って、すべてのブックの値をまとめることができます。

月ごとのブックをまとめる

取得したブック名を使って、すべてのブックの値をまとめることができます

取得したブック名を使って、すべてのブックの値をまとめることができました。

おわりに

この記事では、月ごとのブックを1つにまとめる方法について、ご紹介しました。

月ごとのブックを1つにまとめるには、Dir関数を使ってすべてのブック名を取得して、「Copy」を使ってデータを取得するとできます。

1つのブックにデータをまとめることができれば、データの加工や編集、解析が簡単になります。

複数ブックのデータをまとめる方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す