指定したフォルダーにあるファイルの一覧を取得する方法の例を記載しています。本記事ではFileSystemObjectを利用します。
ここの記事はサブフォルダー内のファイルは出力されません。もし、サブフォルダーも含むファイル一覧を取得したい場合は、FileSystemObject利用の準備した上で以下を参考にしてください。
FileSystemObject利用の準備
FileSystemObject等を利用するための準備を行います。
VBAでFileSystemObject利用のための準備手順
- Step1VBEで[ツール]-[参照設定…]をクリックします。
- Step2[Microsoft Scripting Runtime]ライブラリにチェックし、[OK]ボタンをクリックします。
これで準備は完了です。
ファイル一覧取得するVBA
ファイル一覧を取得するVBAは以下のとおりです。
Option Explicit
Sub GetFileListInFolder()
Const folderPath As String = "C:\Windows"
Dim fso As FileSystemObject '① FileSystemObject オブジェクト変数の宣言
Dim folderObj As Folder '② Folder オブジェクト変数の宣言
Dim fileObj As File '③ File オブジェクト変数の宣言
Set fso = New FileSystemObject '④ FileSystemObjectの割り当て
If Not (fso.FolderExists(folderPath)) Then '⑤ フォルダーが見つからなかったら処理を中断
Set fso = Nothing
MsgBox ("フォルダーが見つかりません。処理を中断します。" & vbCrLf & _
"フォルダー:" & folderPath)
Exit Sub
End If
Set folderObj = fso.GetFolder(folderPath) '⑥ 変数folderPathのフォルダーの取得
For Each fileObj In folderObj.Files '⑦ フォルダー内にある複数のファイルに対して繰り返す
Debug.Print fileObj.Name '⑧ ファイルの名前をイミディエイトに出力
Next
Set fso = Nothing '⑨ fso変数を破棄
End Sub
- folderPath の値にファイルの一覧を取得したいフォルダーを記載します。
- フォルダーが見つからない場合は、メッセージボックスを表示して処理を中断します(⑤の処理)。
- ⑧で取得したファイルに関して処理を実施します。上記の例ではファイル名をイミディエイトに出力しています。
コメント