- ベストアンサー
フォルダ内の全てのBookに同じ処理を繰り返す
フォルダ内にエクセルファイルが約3,000個あります。 この全てのBookに同じ処理をしたいのですが、マクロで繰り返す方法がわからないので教えて下さい。 処理をする内容は簡単なもので、マクロで作りました。 ・ 各Bookには1つのシートしか存在せず、シート名は重要ではないので全て「Sheet1」になっています。 ・ 各Bookのデータの配置や表形式は同じです。 ・ レコードの行数がBookによって異なります。 処理の内容をマクロで作るところまではできましたが、知識がないためタイムアウトです。 ご教示宜しくお願い致します。
- みんなの回答 (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 必要に応じて ・画面の表示を抑制する ・再計算を手動にする といった手管を追加して高速化を図ります。
その他の回答 (2)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.1 です、連続ですみません。参考として次のページを追加します。 3.5 ワークブックを閉じる http://www.happy2-island.com/excelsmile/smile03/capter00305.shtml
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
もしもその「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
お礼
たくさんのヒントをありがとうございました。 ページを印刷したので、後程ちゃんと勉強させていただきます。 ありがとうございました。
お礼
ありがとうございました。 今、せっせと処理をしてくれています。 解説付きで教えて下さったので、とても勉強になり、理解することができました。 高速化のアドバイスもありがとうございます。 試してみたら本当に早くなりました! ネットでいろいろ検索をしてみましたが、気ばかり焦って、思うような結果も得られず、こちらで相談したのですが、こんなにご丁寧に教えていただけて心から感謝しています。 本当にありがとうございました。