カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

VBA ディレクトリ内の全ファイルを読み込む

この記事は最終更新日から1年以上経過しています。

Visual BasicでFileSystemObjectを使用し、
指定したディレクトリ内の全ファイル(サブディレクトリを含む)を読み込む。
全階層を再帰的に検索することができます。

■コマンドボタンに以下のようにコードを記述

Private Sub ファイル検索_Click()

    Dim strPath As String
    Dim fsObj As Object

    If Not IsNull("検索文字列") Then

        Set fsObj = CreateObject("Scripting.FileSystemObject")

        strPath = "調べたいディレクトリまでのフルパス"
        strKey = "検索文字列"

        'ディレクトリ読み込み関数を呼び出し
        Call SearchSubDirectory(fsObj.GetFolder(strPath), strKey)

        'オブジェクトを破棄
        Set fsObj = Nothing

    End If

End Sub


■ディレクトリ読み込み関数を宣言

Private Sub SearchSubDirectory(ByVal fsObj As Object, ByVal strKey As String)

    Dim fsObj2 As Object
    Dim objFILE As Object

    'サブディレクトリを探索するループ処理
    For Each fsObj2 In fsObj.SubFolders
        'フォルダ毎に再帰呼び出し
        Call SearchSubDirectory(fsObj2, strKey)
    Next fsObj2

    'ディレクトリ内のファイル読み込み
    For Each objFILE In fsObj.Files
        With objFILE
            Debug.Print .ParentFolder 'ファイルが格納されているディレクトリ名
            Debug.Print .Path 'フルパス
            Debug.Print .Name 'ファイル名
        End With
    Next objFILE

    'オブジェクトを破棄
    Set fsObj = Nothing

End Sub
この記事がお役に立ちましたらシェアお願いします