• ベストアンサー

エクセル・マクロ

(同じフォルダの)複数のブックの中に複数のシートがあり、シートの名前が(一部)共通しています(例:赤組のA、赤組のB・・・)。別のブックに、同じ名称(例:赤組)を含むシートをコピーしてまとめたい(シート1が赤組のA、シート2が赤組のB・・・)のですが、どのようなマクロを記すれば良いでしょうか。宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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 #実はこうでしたとか,ついでにあれもこれもどれもやってくださいとかは,一切無しで。

shtokk2778
質問者

お礼

大変助かりました!ありがとうございました。

その他の回答 (2)

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

私の前回の回答ですが、理解していただけたのでしょうか? マクロの記録で、ある程度のマクロを作成して、それを発展させていけば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組以降も、同じように記述します。  

shtokk2778
質問者

お礼

大変助かりました!ありがとうございました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

やりたいことを私なりに以下のように解釈しました。   ブック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  

shtokk2778
質問者

補足

早速のご教授、ありがとうございます。 実行したい事は、以下のようになります。 宜しくお願いいたします。 同じフォルダ内の、 ブック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組まであります。

関連するQ&A