【EXCEL VBA】フォルダ配下のファイル一覧を取得したい

フォルダ配下のファイルを一括で処理したい場合、まずはファイル一覧の取得が必要になります。指定したフォルダ配下のファイル一覧を取得する方法を紹介します。

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ファイルずつ処理する際に進捗状況を把握することができます。進捗状況を表示したい場合については、以下記事を参照してください。