項目

ファイルを検索する(サブフォルダ含む)

概要

Dirでファイルを検索する事ができます。
サブフォルダを検索する為に関数を再帰的に呼び出しています。

Option Compare Database
Option Explicit

Private Sub コマンド0_Click()

    Dim filelist As String
    Dim i        As Long
    Dim element
    Dim group

    'c:\tempを検索
    serch_files "c:\temp", filelist

    group = Split(filelist, vbTab, , vbBinaryCompare)

    'リストの出力
    For Each element In group
        Debug.Print element
    Next

End Sub


'-----------------------------------------------------------------------
' ■serchFiles
'
' 機能 :  指定されたフォルダのファイルを検索する
'
' 引数  :  dirPath  (in   )  検索するフォルダ
'           filelist (inout)  見つかったファイルをTAB区切りで格納
'
' ※例外処理は含めて
'-----------------------------------------------------------------------
Sub serchFiles(ByVal dirPath As String, filelist As String)

    Dim filename As String
    Dim files    As String
    Dim temp     As String
    Dim element
    Dim group

    '最後に\を付加
    If Right$(dirPath, 1) <> "\" Then dirPath = dirPath & "\"

    '------------------------------------------------
    'ファイルの検索
    '------------------------------------------------
    filename = Dir(dirPath, vbDirectory)
    
    Do Until Len(filename) = 0

        ' "." と ".." を除く
        If (filename <> ".") And (filename <> "..") Then files = files & vbTab & filename

        ' 次を検索
        filename = Dir()
    Loop

    '------------------------------------------------
    'サブフォルダの場合検索
    '------------------------------------------------
    group = Split(files, vbTab, , vbBinaryCompare)

    For Each element In group
        If element <> "" Then

            temp = dirPath & element
            
            '【フォルダ】再帰処理
            If (GetAttr(temp) And vbDirectory) <> 0 Then
                serch_files temp, filelist
            Else
            '【ファイル】変数に格納
                filelist = filelist & vbTab & temp
            End If
        End If
    Next

End Sub