• ベストアンサー

複数のブックから、特定文字のシートをあつめるには?

複数のエクセルブックがあり、シートがたくさんあります。ブック名もバラバラで、シート名は「○○(日本人)」、「××(日本人)」、「○○(外国人)」、「××(外国人)」……とあります。 このシートを、日本人、外国人それぞれエクセルブックのシートごとにあつめたいです。 エクセルマクロを使って行いたいのですが、どうしたらいいかわかりません。 どなたか教えていただけないでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

マクロブックを1冊用意する ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim a as variant  dim myFile as variant  dim myBook as workbook  dim w as worksheet  dim wJ as workbook  dim wF as workbook ’複数のエクセルブック  a = application.getopenfilename(title:="select files", multiselect:=true)  if not isarray(a) then exit sub ’指定のブックごとに  for each myfile in a   set mybook = workbooks.open(filename:=myfile)  ’シートごとに   for each w in mybook.worksheets    if w.name like "*日本人*" then   ’日本人シート     if wj is nothing then      w.copy      set wj = activeworkbook     else      w.copy after:=wj.worksheets(wj.worksheets.count)     end if    elseif w.name like "*外国人*" then   ’外国人シート     if wf is nothing then      w.copy      set wf = activeworkbook     else      w.copy after:=wf.worksheets(wf.worksheets.count)     end if    end if   next   mybook.close savechanges:=false  next end sub ファイルメニューから終了してエクセルに戻る ALT+F8でマクロを実行する

kuskus_2
質問者

お礼

すごいです!!! 途中、(w.copy after:=wj.worksheets(wj.worksheets.count)ここで、中断しましたが継続の三角マークを押したら、最後までいきました。 なぜ中断したか、疑問は残りますが、シートの数が多すぎたのでしょうか? しかし、綺麗に日本人、外国人のエクセルブックに分けられました。 気持ちよかったです。ありがとうございました。

関連するQ&A

専門家に質問してみよう