【VBA】指定したフォルダーにあるファイルの一覧を取得する方法

指定したフォルダーにあるファイルの一覧を取得する方法の例を記載しています。本記事ではFileSystemObjectを利用します。

ここの記事はサブフォルダー内のファイルは出力されません。もし、サブフォルダーも含むファイル一覧を取得したい場合は、FileSystemObject利用の準備した上で以下を参考にしてください。

FileSystemObject利用の準備

FileSystemObject等を利用するための準備を行います。

VBAでFileSystemObject利用のための準備手順
  • Step1
    VBEで[ツール]-[参照設定…]をクリックします。
  • 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 の値にファイルの一覧を取得したいフォルダーを記載します。
  • フォルダーが見つからない場合は、メッセージボックスを表示して処理を中断します(⑤の処理)。
  • ⑧で取得したファイルに関して処理を実施します。上記の例ではファイル名をイミディエイトに出力しています。

コメント

タイトルとURLをコピーしました