• ベストアンサー

フォルダ内の全てのBookに同じ処理を繰り返す

フォルダ内にエクセルファイルが約3,000個あります。 この全てのBookに同じ処理をしたいのですが、マクロで繰り返す方法がわからないので教えて下さい。 処理をする内容は簡単なもので、マクロで作りました。 ・ 各Bookには1つのシートしか存在せず、シート名は重要ではないので全て「Sheet1」になっています。 ・ 各Bookのデータの配置や表形式は同じです。 ・ レコードの行数がBookによって異なります。 処理の内容をマクロで作るところまではできましたが、知識がないためタイムアウトです。 ご教示宜しくお願い致します。

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

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

だいたいこんな流れで。 sub macro1()  dim myPath as string  dim myFile as string  mypath = "C:\test\" ’指定フォルダのブックを順繰り拾う  myfile = dir(mypath & "*.xls*")  do until myfile = ""  ’ブックを開いて処理を行い保存して閉じる   workbooks.open mypath & myfile   activesheet.range("A1") = "DONE"   activeworkbook.close true   myfile = dir()  loop end sub 必要に応じて ・画面の表示を抑制する ・再計算を手動にする といった手管を追加して高速化を図ります。

maokongreen
質問者

お礼

ありがとうございました。 今、せっせと処理をしてくれています。 解説付きで教えて下さったので、とても勉強になり、理解することができました。 高速化のアドバイスもありがとうございます。 試してみたら本当に早くなりました! ネットでいろいろ検索をしてみましたが、気ばかり焦って、思うような結果も得られず、こちらで相談したのですが、こんなにご丁寧に教えていただけて心から感謝しています。 本当にありがとうございました。

その他の回答 (2)

回答No.2

No.1 です、連続ですみません。参考として次のページを追加します。 3.5 ワークブックを閉じる http://www.happy2-island.com/excelsmile/smile03/capter00305.shtml

回答No.1

もしもその「workbook に施す同じ処理」というのが、開いている workbook に対して実行すべきものであるとすれば、Dir 関数で探して、開いて、データ処理などして、閉じて、を繰り返すなど。 Dir関数 http://officetanaka.net/excel/vba/function/Dir.htm Dir関数でサブフォルダを取得する http://officetanaka.net/excel/vba/tips/tips95.htm Dir関数の注意点 http://officetanaka.net/excel/vba/tips/tips69.htm あまり知られていないDir関数の特徴 http://www.moug.net/tech/exvba/0100048.html

maokongreen
質問者

お礼

たくさんのヒントをありがとうございました。 ページを印刷したので、後程ちゃんと勉強させていただきます。 ありがとうございました。