フォルダ内文字列カウントソフト

Step 2 サブフォルダも含めフォルダ内からファイルを検索する

再帰呼び出しを行いサブフォルダからもファイルを検索し、一覧を作成します。 検索にはフォルダやファイルなどを操作できるFileSystemObjectオブジェクトを使います。

メニューに戻る

スポンサーリンク





実行画面

FileSystemObjectを使うには、VBE画面の参照設定で「Microsoft Scrpting Runtime」のチェックをONにしてください。
VBE画面の参照設定

フォルダ内のファイル検索を実行した結果です。指定したセルから一覧が作成されました。B列にはフォルダ名、C列にはファイル名が表示されます。
フォルダ内のファイル検索を実行した結果

スポンサーリンク



VBAコード


下記のコードを追加してください。FileSystemObjectオブジェクトを使い再帰的にファイル検索を行います。

Private lFileCount As Long

'フォルダ内ファイル検索
Sub ExFolderSearch(sSearchPath As String, lStartRow As Long, lStartCol As Long)
    Dim tFso As FileSystemObject
    
    lFileCount = 0
    Set tFso = New FileSystemObject
    Call ExFolderSearchSub(tFso.GetFolder(sSearchPath), lStartRow - 1, lStartCol)
    Set tFso = Nothing
End Sub

Private Sub ExFolderSearchSub(ByVal tPath As Folder, ByRef lRow As Long, ByVal lCol As Long)
    Dim tInPath As Folder
    Dim tFile As File

    'サブフォルダ内の探索
    For Each tInPath In tPath.SubFolders
        Call ExFolderSearchSub(tInPath, lRow, lCol)
    Next tInPath

    'フォルダ内のファイルを表示
    For Each tFile In tPath.Files
        lRow = lRow + 1
        lFileCount = lFileCount + 1
        Cells(lRow, lCol) = tPath.Path & "\"
        Cells(lRow, lCol + 1) = tFile.Name
    Next tFile
    Set tPath = Nothing
End Sub

下記のコードに変更してください。 [検索フォルダ]コマンドボタンのクリックイベントです。
Private Sub CommandButton1_Click()
    Dim sDir As String
    
    'フォルダー選択ダイアログ
    sDir = SelectFolder_FileDialog
    If sDir <> "" Then
        Range("D3") = sDir
        ExFolderSearch sDir, 6, 2
    End If
End Sub




メニューに戻る

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved