• 締切済み

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

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

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

VBエディターの起動はご存知でしょうか ツールー>マクロー>VBエディター で起動します。 標準モジュールを挿入します。 エディターの 挿入ー>標準モジュール でVBA記述する部分ができます。 下をコピイして貼り付けてください。 Sub Sample1() Dim buf As String, i As Long Dim j buf = Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls") Do While buf <> "" Workbooks.Open Worksheets("Sheet1").Range("A1").Value & "\" & buf Sheets("Sheet1").Range("A1:J1000").Copy ThisWorkbook.Activate Range("A65536").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False buf = Dir() Loop End Sub エディターを閉じます。 このファイルのSheet1のA1セルに「A」「B」「C」「D」「E」「F」「G」を保存しているパスを入れます。 C:\データ とかです。 Sheet1以外のシートを選択して 上記マクロを実行してみてください。 Dir関数は少し特別ですが Dir(Sheets("Sheet1").Range("A1").Value & "\*.xls") A1セルで指定したパスのエクセルファイル(*.xls)のファイル名が全て変数 bufに入ります。 buf = Dir()で順番にファイルが取り出せます。 データを保存したフォルダには他のエクセルファイルは保存しておかないでください。(それらも追加されます) Range("A1:J1000").Copy それぞれのファイルのデータがA列から始まり最大J列 1000行まであるとしています。 Sheets("Sheet1").Range("A1:J1000").Copyの"Sheet1"はデータのファイルのシート名です。 必要に応じて変更してください。 例えば1行目にタイトルがあってコピイ不要であれば Range("A2:J1000").Copy とかにします。 Range("A65536").End(xlUp).Offset(1, 0).Selectは A列の最終の行から順に上に上がり空白でない行の1つ上の行です。 あとは なんとなく動きとコマンドを日本語にしてみるとわかるかもしれませんが詳しくはVBAの本を参考にしてください。 詳しく書こうとすると難しくなります。

関連するQ&A