• ベストアンサー

フォルダ内の全てのエクセルにマクロを実行する方法

1つのフォルダに入っているエクセルに同じマクロを実行したいのですが、やり方がわかりません。 実行するマクロは完成しているため、現在のマクロにフォルダ内全てのエクセルを開いて実行するマクロを追加したいです。 初心者でマクロをよく理解出来ていないので、方法を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

実行するマクロが書いてありませんが、このようにすればいいです。 Sub MacroA() '   Dim FileName As String '   FileName = Dir([B1] & "\*.xls*") '   While FileName > ""     Workbooks.Open [B1] & "\" & FileName     実行するマクロ 'マクロ名をここに書く     ActiveWorkbook.Close True     FileName = Dir   Wend End Sub シートには、図の様に処理するフォルダを入力してください。

tentekomari
質問者

お礼

ありがとうございました。 問題が解決し、うまくいきました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

似た質問は頻出する課題だ。 Googleなどで、「フォルダ内のファイル名を取得 vba」などで照会すれば、似た課題のコードが出てくる。 VBAをやるなら、WEB照会は必須だろう。それさえもやってなくて、他人に頼っていては、回答が出ても、修正もできず、意味も解らず、役に立たないだろう。 (1)Dir関数を利用する法 (2)FSOでForEachを使う方法 Excelブックに限定するには、拡張子xlsx、(マロを使っているならxlsmも)を捉えればよい。(2)の場合は、それ以外は処理しないでスルー。 (1)だと拡張子を指定してDir関数が使える。 (1)だと http://officetanaka.net/excel/vba/file/file07.htm (2)だと http://officetanaka.net/excel/vba/filesystemobject/sample07.htm これら以外も多数の記事がある。 ーー これで、フォルダ内のエクセルブック名がわかる。 そのブック名でブックを開き、問題のシートを指定して、その直後に、VBAでのコードがすでにできているSUBの名前を記入するだけ。 問題のシートを探す必要がある場合が在り、これも質問事項かな。 しかし、出来上がっているVBAの処理コードが、いろんなブックのシート用に なっているか(通常はなっていないので、修正が簡単か)など、チェックと手直しとテストが必要な場合がある。 これはVBAの中級以上のスキルが要ると思う。 (A)あるブックのシートに、そのフォルダのエクセルブック名を行データとしてリスト化する。 (B)そして一番上のブック名を読んで、今できているマクロが正しく動くか(結果が正しいか)どうか、チェックする。 (c)そしてその後、(A)の全行のブック名を使って、処理を行う。 ForNextでの繰り返しなど。 ファイルが多いと、開いて、閉じてで時間がかかるが、やむを得ない。 ScreenUpdating=Falseなどを活用すべきなのかな。

関連するQ&A