大体でIT

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

大体でIT

Excel VBAを使って、複数ブックを1つのブックにまとめるには、「複数シート」にまとめる方法と「1シート」にまとめる方法があります。フォルダ内のすべてのブックをまとめたいという場合には、「Dir」が使えます。複数ブックをまとめる方法について、マスターしていきましょう。

はじめに

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

複数ブックを1つのブックへまとめる方法について、次の2つがあります。

  • 複数シートにまとめる
  • 1つのシートにまとめる

フォルダ内のすべてのブックをまとめたい、というような場合には、「Dir」が使えます。

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

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

この記事を読むメリット

  • 複数ブックを1つのブックにまとめる方法をマスターできます。

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

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

目次

複数ブックの値を複数シートでまとめる

複数ブックの値を、複数シートでまとめるというのをやってみます。

複数ブックの値を複数シートでまとめる

やりたい内容は、複数ブックを複数シートでまとめたい、ということになります。

やりたい内容

あらかじめ複数ブックを用意しておきます。

やりたい内容は、複数ブックを複数シートでまとめたい、ということになります

次のように、複数ブックを複数シートでまとめてたいです。

やりたい内容は、複数ブックを複数シートでまとめたい、ということになります

取得する複数のブックは、次のようになります。

取得する複数ブック

1つ目のExcelです。

1つ目のExcelです

2つ目のExcelです。

2つ目のExcelです

3つ目のExcelです。

3つ目のExcelです

4つ目のExcelです。

4つ目のExcelです

5つ目のExcelです。

5つ目のExcelです

という感じです。

複数ブックを、複数シートにまとめる

手順としては、下記の内容を繰り返していきます。

  • ブックを開く
  • シートをコピー
  • シート名を変更
  • ブックを閉じる

複数ブックを、複数シートにまとめるVBAコードです。

Sub TEST1()
  
  For i = 1 To 5
    'ブックを開く
    Workbooks.Open ThisWorkbook.Path & "\TEST\TEST" & i & ".xlsx"
    With ActiveWorkbook
      'シートをコピーして取得
      .Worksheets("Sheet1").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
      'シート名をブック名に変更
      ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = .Name
      .Close False 'ブックを閉じる
    End With
  Next
  
End Sub

では、VBAコードを実行してみます。

複数ブックを、複数シートにまとめられた

複数ブックを、複数シートにまとめることができます。

複数ブックを、複数シートにまとめることができました

他のシートもみてみます。

2つ目のシートです。

2つ目のシートです

3つ目のシートです。

3つ目のシートです

4つ目のシートです。

4つ目のシートです

5つ目のシートです。

5つ目のシートです

こんな感じで、複数ブックを複数シートにまとめることができます。

フォルダ内の複数ブックの値を複数シートでまとめる

では次は、フォルダ内の「すべて」の複数ブックを複数シートでまとめる、というのをやってみます。

やりたい内容

やりたい内容は、フォルダ内のすべての複数ブックを、複数シートでまとめたい、ということになります。

やりたい内容は、すべての複数ブックを複数シートでまとめたい、ということになります

先ほどと同じように、複数シートでまとめます。

やりたい内容は、すべての複数ブックを複数シートでまとめたい、ということになります

取得する複数ブックについて、みてみます。

取得する複数ブック

1つ目のExcelです。

1つ目のExcelです

2つ目のExcelです。

2つ目のExcelです

3つ目のExcelです。

3つ目のExcelです

4つ目のExcelです。

4つ目のExcelです

5つ目のExcelです。

5つ目のExcelです

という感じです。

すべてのブックを、複数シートにまとめる

手順としては、次の内容を繰り返していきます。

  • 「Dir」を使ってフォルダ内のブック名を取得
  • ブックを開く
  • シートをコピーする
  • シート名を変更する
  • ブックを閉じる
  • 「Dir」で次のブック名を取得

フォルダ内のすべてのブックを、複数シートにまとめるVBAコードになります。

Sub TEST2()
  
  Dim A
  'フォルダ内のブック名を取得
  A = Dir(ThisWorkbook.Path & "\TEST\*")
  
  Do While A <> ""
    'ブックを開く
    Workbooks.Open ThisWorkbook.Path & "\TEST\" & A
    With ActiveWorkbook
      'シートをコピーして取得
      .Worksheets("Sheet1").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
      'シート名をブック名に変更
      ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = .Name
      .Close False 'ブックを閉じる
    End With
    A = Dir() '次のブック名を取得
  Loop
  
End Sub

では、実行してみます。

すべてのブックを、複数シートでまとめられた

複数ブックを、複数シートにまとめることができます。

複数ブックを、複数シートにまとめることができました

他のシートもみてみます。

2つ目のシートです。

2つ目のシートです

3つ目のシートです。

3つ目のシートです

4つ目のシートです。

4つ目のシートです

5つ目のシートです。

5つ目のシートです

こんな感じで、フォルダ内のすべてのブックを、1つのブックの複数シートにまとめることができます。

複数ブックの値を1シートにまとめる

次は、複数ブックの値を「1シート」にまとめる、というのをやってみます。

複数ブックの値を1シートにまとめる

やりたい内容は、複数ブックを1シートにまとめたい、ということになります。

やりたい内容

次は、「1シート」にまとめてみます。

やりたい内容は、複数ブックを1シートにまとめたい、ということになります

1つのブックの1シートにまとめる、という感じです。

やりたい内容は、複数ブックを1シートにまとめたい、ということになります

取得する複数ブックは、次のようになります。

取得する複数ブック

1つ目のExcelです。

1つ目のExcelです

2つ目のExcelです。

2つ目のExcelです

3つ目のExcelです。

3つ目のExcelです

4つ目のExcelです。

4つ目のExcelです

5つ目のExcelです。

5つ目のExcelです

という感じです。

複数ブックを、1シートにまとめる

手順としては、次の内容を繰り返していくことでできます。

  • ブックを開く
  • ブックのデータ部分を取得
  • ブック名を取得
  • ブックを閉じる

複数ブックを、1シートにまとめるVBAコードになります。

Sub TEST3()
  
  Dim A, B
  Set B = ThisWorkbook.Worksheets("Sheet1")
  
  For i = 1 To 5
    'ブックを開く
    Workbooks.Open ThisWorkbook.Path & "\TEST\TEST" & i & ".xlsx"
    'データ部分を取得
    With ActiveWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion
      A = .Rows("2:" & .Rows.Count)
    End With
    'データを入力
    B.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(UBound(A, 1), 2) = A
    'ブック名を入力
    B.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(UBound(A, 1)) = ActiveWorkbook.Name
    ActiveWorkbook.Close False 'ブックを閉じる
  Next
  
End Sub

実行すると、複数ブックを1シートにまとめることができます。

複数ブックを1シートにまとめられた

複数ブックを1シートにまとめることができました

複数ブックを1シートにまとめることができました。

フォルダ内の複数ブックの値を1シートにまとめる

次は、フォルダ内の「すべて」の複数ブックの値を、「1シート」にまとめる、というのをやってみます。

やりたい内容

やりたい内容は、すべての複数ブックを1シートにまとめたい、ということになります。

やりたい内容は、すべての複数ブックを1シートにまとめたい、ということになります

「1シート」にまとめます。

やりたい内容は、すべての複数ブックを1シートにまとめたい、ということになります

では、取得する複数ブックをみてみます。

取得する複数ブック

1つ目のExcelです。

1つ目のExcelです

2つ目のExcelです。

2つ目のExcelです

3つ目のExcelです。

3つ目のExcelです

4つ目のExcelです。

4つ目のExcelです

5つ目のExcelです。

5つ目のExcelです

という感じです。

すべてのブックを、1シートにまとめる

手順としては、次の内容を繰り返すとできます。

  • 「Dir」でフォルダ内のブック名を取得
  • ブックを開く
  • ブックのデータ部分を取得
  • ブック名を取得
  • ブックを閉じる
  • 「Dir」で次のブック名を取得

フォルダ内のすべてのブックを、1つのブックの1シートにまとめるVBAコードになります。

Sub TEST4()
  
  Dim A, B, C
  Set B = ThisWorkbook.Worksheets("Sheet1")
  'フォルダ内のブック名を取得
  C = Dir(ThisWorkbook.Path & "\TEST\*")
  
  Do While C <> ""
    'ブックを開く
    Workbooks.Open ThisWorkbook.Path & "\TEST\" & C
    'データ部分を取得
    With ActiveWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion
      A = .Rows("2:" & .Rows.Count)
    End With
    'データを入力
    B.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(UBound(A, 1), 2) = A
    'ブック名を入力
    B.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(UBound(A, 1)) = ActiveWorkbook.Name
    ActiveWorkbook.Close False 'ブックを閉じる
    C = Dir() '次のブック名を取得
  Loop
  
End Sub

実行すると、すべての複数ブックを1シートにまとめることができます。

すべてのブックを1シートにまとめられた

すべての複数ブックを1シートにまとめることができました

すべての複数ブックを1シートにまとめることができました。

おわりに

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

複数ブックを1つのブックへまとめる方法について、次の2つがあります。

  • 複数シートにまとめる
  • 1つのシートにまとめる

フォルダ内のすべてのブックをまとめたい、というような場合には、「Dir」が使えます。

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

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

関連する記事から探す

カテゴリから探す

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

サイト内を検索する

↓キーワードを入力する

アーカイブから探す