• 締切済み

フォルダ内にある複数エクセルブックを一つにまとめたい

マクロを使って複数ブックを一つにマージしたいです。 どなたか宜しくお願いします。 フォルダに16個のエクセルブックがあります。ブックは4つのシートでできています。シートの列数は共通なのですが、行数が異なります。 これを新しいブックにコピペでつなげていきたいのです。 すみませんがどなたか宜しくお願いします。

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

いろいろな場面を想定したら結構長くなってしまいました。 一応コメントを読めばわかるとは思います。 Sub シート集約()   Dim i As Long   Dim 初期シート数 As Long   Dim 対象フォルダ As String   Dim Bname As String   Dim 転送先最終 As Long   Dim 転送元最終 As Long   Dim 最終列 As Long   Dim 転送先sheet As Worksheet   Dim 転送先Book As Workbook   Dim 転送元sheet As Worksheet   Dim 転送元Book As Workbook   Dim シート有無 As Boolean   '新しいBookを用意します。ここに集約して保存します。   Workbooks.Add   Set 転送先Book = ActiveWorkbook '新しいBookを転送先Bookとする   初期シート数 = Sheets.Count   '新しいBook の最初のシート名を変更します。(ダブらないように)   For i = 1 To 初期シート数     Worksheets(i).Name = "qq" & i   Next   対象フォルダ = "C:\VBAtest"   '対象ファイルのあるフォルダー   Bname = Dir(対象フォルダ & "\" & "*.xls")  '最初のExcelファイル名を取得   While Bname <> ""              'ファイル名が空白になったら終了     Workbooks.Open (対象フォルダ & "\" & Bname)  '対象ファイルを開く     Set 転送元Book = ActiveWorkbook        '対象ファイルを転送元Bookとする     For Each 転送元sheet In 転送元Book.Worksheets '転送元Bookの全てにシートをひとつづつ      '以下Nextまで 同じ名前のシートが転送先にあるかcheck       シート有無 = False       For Each 転送先sheet In 転送先Book.Worksheets         If 転送元sheet.Name = 転送先sheet.Name Then             シート有無 = True         End If       Next       If シート有無 = True Then           ' シートがあるときの処理  範囲指定してCopy           Set 転送先sheet = 転送先Book.Worksheets(転送元sheet.Name)           転送先最終 = 転送先sheet.Cells(Rows.Count, 1).End(xlUp).Row '転送先シートの最終行           転送元最終 = 転送元sheet.Cells(Rows.Count, 1).End(xlUp).Row '転送元シートの最終行           最終列 = 転送元sheet.Cells(1, Columns.Count).End(xlToLeft).Column '最終転送列           転送元sheet.Activate           '転送範囲をCopy           転送元sheet.Range(Cells(2, 1), Cells(転送元最終, 最終列)).Copy _               Destination:=転送先sheet.Cells(転送先最終 + 1, 1)         Else           'シートのCopy           転送元sheet.Copy After:=転送先Book.Sheets(転送先Book.Sheets.Count)       End If     Next     転送元Book.Close '処理が終わったファイルをclose     Bname = Dir()  '次のExcelファイル名を取得   Wend   Application.DisplayAlerts = False 'シートの削除と保存に確認メッセージを出さない   For i = 1 To 初期シート数     '初期シートは不要なので削除     Worksheets(i).Delete   Next   転送先Book.SaveAs 対象フォルダ & "\Sumsheet.xls"  '対象ファイルのフォルダーに保存   転送先Book.Close                  'Close   Application.DisplayAlerts = True  '[シートの削除と保存に確認メッセージを出さない]を元に End Sub テストするときはフォルダーのバックアップをしてくださいね。 対象のフォルダーにまとめたファイルもできますのでそのまま2回実行すると 変になりますからご注意。 わからないことがありましたらどうぞ

関連するQ&A

  • エクセルで複数のブックに分かれているデータをまとめる方法

    エクセルを使っています。 ・複数のシート(シートA、シートB、シートC)にあるデータを、一つのシートにまとめる良い方法を教えて下さい。 ・各シートのデータですが、1.列数は同じ、2.行数はばらばらです。 ・各シートにあるデータを、一つのシートに縦に長くコピーしたいです。 簡単なマクロならがんばって使いたいので、マクロのヒントでもかまいません。 どうぞよろしくお願いいたします。

  • フォルダ内の特定ブックだけを1つのブックにまとめる

    はじめましてマクロ超初心者です。 会社のシステム(ツール?)で同じフォルダに1案件につき2つのブックが作成されます。 毎回約30案件、すなわち同じフォルダに60ブックあります。 (1)同じフルダ内に60ブック (2)その内、同じ案件が2つ。ブック名「1_****」と「2_****」 ****は毎回かわる (3)ブックには2つのシート。シート名「1」と「2」 (4)ブック「1_****」のシート「1」が開いた状態、ブック「2_****」のシート「2」が開いた状態になってる (5)必要なのはブック「1_****」のシート「1」とブック「2_****」のシート「2」 この「1_****」のシート「1」と「2_****」シート「2」を「1_****」にまとめる作業を毎回手作業でやっています。これをなんとかマクロで出来ないでしょうか?同じフォルダにある複数ブックをまとめるマクロは見つけました、複数=全てのブックに実行されてしまいます。フォルダ内の特定のブックをまとめるマクロがみつからず。。。どなたかご教授して頂けませんか?

  • 複数のブックを新しいブックのSheet1にまとめたい

    教えてください。 「A」「B」「C」「D」「E」「F」「G」 と言った名前のエクセルファイルがあります。 実際は約50個ありますが・・・。 それぞれ、Sheet1にのみ同じフォーマットですが、行数というか、件数が異なります。 新しいエクセルブックのSheet1にA」のデータの下に「B」のデータを貼り付けるという風に、「A」~「G」をまとめて一つのシートにまとめたいです。コピペではなくマクロでできるということを知りました。 毎月作業することになるので、マクロを組んでおきたいと思っています。 しかし、マクロは単純作業を記録して実行するというような基本的なことしかわかりません。 専門的用語ではなく、 (1)ツールをクリック (2)すべてのブックを開いておく (3)Visual Basicをクリック などというように、手順を教えていただけないでしょうか? よろしくお願いします。

  • 複数ブックの印刷マクロを作成したいと思っています。

    2つのフォルダがあり、その中に20のブックがそれぞれあります。 20のブックの中にはシートが4つづつあり、シート3とシート4のみ印刷したい。 1つのフォルダでは あまり詳しくありませんのでお知恵をお借りしたいと思います。 まず、フォルダの中にある複数ブックの印刷を一括で管理できるマクロは可能なのでしょうか。 二つのフォルダの中に20個のブックがあり、その中にはそれぞれ4シートあるExcelファイルで構成されています。 毎回シート3とシート4のみの印刷をブックの数だけ行います。 40ブックを開け、約80シート印刷するのを簡素化できないかなと思っております。 まず Aフォルダの中 20のブックの中にはシートが4つずつあり、それぞれシート3は全て印刷。 ブック15~19のみシート4は印刷しません。 要約しますと ブック1~14とブック20はシート3.シート4を印刷 ブック15~19はシート3のみ印刷 Bフォルダも同様 ブックそれぞれにマクロシートがあればいいかなと思っているのですが。。。 PC環境はXPです。その他重要なソフトが入っているのであまりマクロが重い場合は諦めようかなと思っています。 簡単に印刷できるようなら教えていただけると幸いです。 初心者なのでコピペでOKぐらいにしていただけますと助かります。 よろしくお願いいたします。

  • Excel VBA 複数ブックのシート結合方法

    複数ブックの特定のシート(都度指定)のみを結合するマクロを組みたいです。 例えば、「ファイルマージ前」というフォルダがあって、その中には数値のみ違う同フォーマットのアンケート集計結果が保存されています。 このフォルダ内には50ほどのブックが保存されていて、そのブック内の「N表」というシート(50あるブック内全てに存在するシート)を新規ブック(マクロを組み込むブック)の1シートに上から順に値コピーしていきたいです。 今後、別の機会でファイルマージが必要になった際にも使用出来る様に、シート名を都度指定(セルにシート名を入力して、そのシート名を参照する等)出来るようにしたいのですが、自分の知識とネット等で調べた情報のみではうまく作成出来ませんでした。 詳しい方のお知恵をお借りしたいです。 宜しくお願い致します。

  • 複数のエクセルブックをひとつのブックにまとめる方法

    同一フォルダに複数のエクセルブック(100個以上)が入っています。 その中のSheet1だけ(Sheet1~3まですべてのブックにあります)を一つのエクセルにまとめたいです。 ブックの中にSheet1、Sheet1(1)、Sheet1(2)・・・ みたいになればいいです。 Sheet名がブック名になるのが理想ですが。。 どのようにすればよろしいでしょうか?

  • エクセルについて 複数のブックをまとめて

    エクセルで作成した複数のブックがあります。 どれもマクロ・VBAを使っています。 そこで、この作成した複数のブックを一つの共通メニュー画面から起動させたいのです。 作成した複数のブック(例) 1出退勤(職員の出退勤を管理するブック) 2カリキュラム編成(カリキュラムを編成するためのブック) 3出張申請用(出張を申請するためのブック) 上記のようなブックを共通のメニュー画面から、選択し、起動したいです。 共通メニュー画面から1を選択すれば出退勤のブックが開くようにしたいです。 また、どれも社内の共有フォルダーに保存しています。メニュー画面もそのようになります。 これを個人のフォルダーに保存しても変わりなく使用できるようにしたいです。 かといって、個人が入力したものがマスターに反映されるといったものではなりません。 あくまで、個人で使用できれば問題ありません。 メニュー画面のみのコピーし、あとのブックは共通フォルダに固定でも、メニュー画面以外のブックもまるまるコピー移動でも、形は問いません。 とにかく、複数のブックを統合ではなく、ぱっとみたところ一つのソフトのようにパッケージング?するイメージです。 ご教授いただけるとありがたいです。 よろしくお願いします。

  • エクセルの複数ブックをまとめて印刷したい

    お世話になります。 早速ですが、フォルダ内に複数のエクセルブックがあります。それらのブックには複数のシートがあります。 フォルダー内の複数のブックの複数のシートも含むものを一括印刷したいのですが可能でしょうか? フォルダー内を一括選択し、ファイルの印刷をした場合、 複数のブックを印刷することは可能なのですが、それらにあるはずの複数のシートが印刷されません。 「複数のブックの全てのシートも含むものを一括印刷」したいのですができるでしょうか? よろしくおねがいします。

  • フォルダ内の全てのBookに同じ処理を繰り返す

    フォルダ内にエクセルファイルが約3,000個あります。 この全てのBookに同じ処理をしたいのですが、マクロで繰り返す方法がわからないので教えて下さい。 処理をする内容は簡単なもので、マクロで作りました。 ・ 各Bookには1つのシートしか存在せず、シート名は重要ではないので全て「Sheet1」になっています。 ・ 各Bookのデータの配置や表形式は同じです。 ・ レコードの行数がBookによって異なります。 処理の内容をマクロで作るところまではできましたが、知識がないためタイムアウトです。 ご教示宜しくお願い致します。

  • フォルダ内にあるブックをひとつのブックの

    エクセルの質問です。 フォルダ内にあるブックをひとつのブックのワークシートに入れる マクロがほしいのですができる方よろしくお願いします。

専門家に質問してみよう