フォルダ配下のファイルを一括で処理したい場合、まずはファイル一覧の取得が必要になります。指定したフォルダ配下のファイル一覧を取得する方法を紹介します。
FileSystemObjectを使って解決する
フォルダ・ファイル関連の処理をするには、FileSystemObjectを利用するのが近道で安全です。サンプルプログラムでもFileSystemObjectを使用しています。
ただし、サンプルプログラムを動かすには、VBEの参照設定をする必要があります。FileSystemObjectを利用するために、ツール – 参照設定にて、Microsoft Scripting Runtimeにチェックを入れる必要があります。 詳細は以下の記事を参照してください。
サンプルプログラムを確認する(コピペOK)
GetFolderにてフォルダを指定し、filesにてファイル一覧を取得しています。ファイル一覧はFor Eachで1ファイルずつ取得することができます。
Sub sample()
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Dim f As File
' GetFolder(フォルダ名).Filesでフォルダ配下のファイル一覧を取得
Dim files: Set files = fso.GetFolder("c:\Windows").files
Debug.Print files.Count ' ファイル数は「Count」で取得できます。
' ループ処理で1ファイルずつ処理
For Each f In files
Call execute(f)
Next
End Sub
Sub execute(f As File)
' ファイル毎に処理する内容を記述する。今回はファイル名を出力するのみ。
Debug.Print f.Name ' notepad.exe, explorer.exe, win.ini, ....
End Sub
Countにてフォルダ配下のファイル数を把握することができるので、1ファイルずつ処理する際に進捗状況を把握することができます。進捗状況を表示したい場合については、以下記事を参照してください。