• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じ場所にあるファイル全てに対してマクロをかけたい)

同じ場所にあるファイル全てに対してマクロをかける方法は?

このQ&Aのポイント
  • フォルダ内の全ファイルに対してマクロを実行する方法が知りたいです。
  • 複数のファイルを開く手間なく、一括で処理するマクロの書き方を教えてください。
  • マクロを使って、ファイルを開くことなくフォルダ内のすべてのファイルに処理をかけたいです。

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

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

sub macro1()  dim myPath as string  dim myFile as string  dim w as workbook  dim s as worksheet  mypath = thisworkbook.path & "\"  myfile = dir(mypath & "*.xls")  do until myfile = ""   if myfile <> thisworkbook.name then    set w = workbooks.open(mypath & myfile)    for each s in w.worksheets     s.autofiltermode = false     s.range("1:2").delete shift:=xlshiftup     s.range("A1") = "No1"    next    w.close savechanges:=true   end if   myfile = dir()  loop end sub といった具合に。

mame123456
質問者

お礼

何度もご丁寧にありがとうございました。 keithinさんにお答えいただけたらと思ってこちらに捕捉(継続)で質問をさせて いただきましたが、ちょっと時間がなかったので新たに質問をたちあげさせて いただきました。すいません。 本当にありがとうございます!

mame123456
質問者

補足

できました!ありがとうございます。 ちなみに、ファイル名を変更して保存することは可能でしょうか。 処理前のファイル:AAA.xls 処理後のファイル:○AAA.xls としたいです。

その他の回答 (1)

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

Sub test02() Application.ScreenUpdating = False flg = Array("3.xls", "01XX.xls", "2日.xls", _ "2段リスト.xls", "bbb.xls") For i = 0 To UBound(flg) Workbooks.Open flg(i) MsgBox flg(i) Application.DisplayAlerts = False ActiveWorkbook.Close Next i Application.ScreenUpdating = False End Sub を参考にして、MsgBox flg(i)のところに処理を入れてはどうだろう。 配列は20ファイルぐらいまで課と思う。その良いところはArrayに記述順序で開かれる。 セルの1つの空き列に記述しても良い。 ーー もうひとつ Sub test01() Set objfs = CreateObject("scripting.filesystemobject") d = CurDir() MsgBox d flg = Array("3.xls", "01化.xls", "2日.xls", _ "2段リスト.xls", "bbb.xls") Set fld = objfs.getfolder(d) For Each fl In fld.Files For i = 1 To UBound(flg) If fl.Name = flg(i) Then MsgBox fl.Name End If Next i Next End Sub なども考えられる、かもしれないが、フォルダのすべてや、少数例外以外のファイルを処理するときは良いが、その存在を確認後やはりブックを開かないといけないのであまりメリットが無いかもしれない。 。 >(4ファイル開いておけば なぜ4つのブックを開いておく必要があるのか良くわからない(質問での説明不足) 1つづつ、開いて処理、閉じるのくり返しではないのですか。 >オートフィルタを消し 突然出てきて何のことか判らない。 全般に、ポイントの押さえどころがあいまいで、まだVBAの経験も少ない(マクロの記録程度?)のに、難しいことをやりすぎの感あり。 ーー 「マクロをかける」と言う表現はしない。 ーー 処理する内容が、質問文に時系列的に説明されていない。コードを載せるより、手作業でやるとした場合の処理順序を明確に説明する訓練をしたほうが、今後役立つ。

mame123456
質問者

お礼

ありがとうございます。 素人で、説明が下手で申し訳ありませんでした。

関連するQ&A