プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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の本を参考にしてください。
詳しく書こうとすると難しくなります。
    • good
    • 34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!