- ベストアンサー
エクセル・マクロ
(同じフォルダの)複数のブックの中に複数のシートがあり、シートの名前が(一部)共通しています(例:赤組のA、赤組のB・・・)。別のブックに、同じ名称(例:赤組)を含むシートをコピーしてまとめたい(シート1が赤組のA、シート2が赤組のB・・・)のですが、どのようなマクロを記すれば良いでしょうか。宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1)どんなファイルがそもそもあるのか調べる 2)調べたファイルを開く 3)シート名を調べる 4)該当したらコピーする といったマクロを書きます。 sub macro1() dim myPath as string dim myFile as string dim target as workbook dim myred as workbook dim w as worksheet mypath = "C:\test\" myfile = dir(mypath & "*.xls") on error goto addnewred do until myfile = "" set target = workbooks.open(filename:=mypath & myfile) for each w in activeworkbook.worksheets if w.name like "赤組*" then w.copy after:=myred.worksheets(myred.worksheets.count) end if next target.close false myfile = dir() loop exit sub addnewred: w.copy set myred = activeworkbook resume next end sub #実はこうでしたとか,ついでにあれもこれもどれもやってくださいとかは,一切無しで。
その他の回答 (2)
- kokorone
- ベストアンサー率38% (417/1093)
私の前回の回答ですが、理解していただけたのでしょうか? マクロの記録で、ある程度のマクロを作成して、それを発展させていけばOKです。 コピー元のブックのシート名の順序に規則性があれば、 繰り返し命令など、使用できますし、全てのシート名が明記されていませんので、 ここは、いわゆるベタなやり方がいいでしょう。 すべての処理が完成したら、次のステップとして、繰り返し命令などで、すっきりさせる ことを考えます。 Windows("ブック1").Activate Sheets("1組A").Select Sheets("1組A").Copy Before:=Workbooks("1組.xls").Sheets(1) ここまでが、1ブロックです。2ブロック目移行は、最後のSheets(1) をSheet(2)のように増やしていきます。 1組が終わったら、2組以降も、同じように記述します。
お礼
大変助かりました!ありがとうございました。
- kokorone
- ベストアンサー率38% (417/1093)
やりたいことを私なりに以下のように解釈しました。 ブック1(1組) シート1(A) シート2(B) シート3(C) ブック1(2組) シート1(A) シート2(B) シート3(C) ブック1(3組) シート1(A) シート2(B) シート3(C) →集計ブック(集計) シート1(1組A) シート2(2組A) シート3(3組A) シート4(1組B)・・・・・・ 以上で宜しければ、 1)シートのコピー(コピー先:集計ブック) 2)コピーしたシート名の変更 をマクロの記録で作成してみてください。 以下、実行結果 Windows("1組.xls").Activate Sheets("A").Select Sheets("A").Copy Before:=Workbooks("集計.xls").Sheets(1) Sheets("A").Select Sheets("A").Name = "1組A" Range("J32").Select Windows("2組.xls").Activate Sheets("A").Select Sheets("A").Copy Before:=Workbooks("集計.xls").Sheets(2) Sheets("A").Select Sheets("A").Name = "2組A" Range("O11").Select
補足
早速のご教授、ありがとうございます。 実行したい事は、以下のようになります。 宜しくお願いいたします。 同じフォルダ内の、 ブック1 シート1(1組A) シート2(3組B) シート3(4組C)・・・ ブック2 シート1(1組D) シート2(2組E) シート3(3組F) シート4(4組G)・・・ ブック3 シート1(2組H) シート2(5組I)・・・ ブック4 シート1(1組J) シート2(3組k) シート3(5組L)・・・ ブック5~50くらい・・・ → 集計(シート名の一部が“1組”であるシートを、別ブック1組にコピーする) 別ブック1組 シート1(1組A) シート2(1組D) シート3(1組J)・・・ ※別ブック2組 以降、以下同文。別ブックは、1組から15組まであります。
お礼
大変助かりました!ありがとうございました。