こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

1つのフォルダに入っているエクセルに同じマクロを実行したいのですが、やり方がわかりません。
実行するマクロは完成しているため、現在のマクロにフォルダ内全てのエクセルを開いて実行するマクロを追加したいです。

初心者でマクロをよく理解出来ていないので、方法を教えてください。よろしくお願いします。

投稿日時 - 2019-12-05 07:18:17

QNo.9686434

困ってます

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

実行するマクロが書いてありませんが、このようにすればいいです。

Sub MacroA()
'
  Dim FileName As String
'
  FileName = Dir([B1] & "\*.xls*")
'
  While FileName > ""
    Workbooks.Open [B1] & "\" & FileName
    実行するマクロ 'マクロ名をここに書く
    ActiveWorkbook.Close True
    FileName = Dir
  Wend
End Sub

シートには、図の様に処理するフォルダを入力してください。

投稿日時 - 2019-12-05 08:01:30

お礼

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

投稿日時 - 2019-12-06 00:10:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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などを活用すべきなのかな。

投稿日時 - 2019-12-05 12:00:19

あなたにオススメの質問