Excelでフォルダ内文字列検索ソフトを作ってみよう

Step 3 TXTファイルとHTMLファイルのみ取り出す

文字列が検索できるように、テキストファイルとHTML(HTM)ファイルのみ検索し一覧を作成できるように変更します。
前回、サブフォルダは列を下げ表示するようにしていましたが、検索結果の文字が分かり難い為、1列のみ下げファイル一覧を表示するように変更します。


Homeへ > Excelでアプリケーションソフト2 > フォルダ内文字列検索ソフト

実行画面

「ファイル探索」ボタンをクリックすると、フォルダ内を探索し見つかれば、フォルダ名と一段下げファイル名を表示するようにしました。次に見つかったファイルが前回と同じフォルダならフォルダ名は表示しません。
フォルダ名とファイル名


コード

下記のVBAコードを追加してください。

'拡張子を取得
Private Function ExGetExt(sfina As String) As String
    Dim i As Long
    Dim s1 As String
    
    ExGetExt = ""
    'ファイル名の最後の文字から「.」を探す
    For i = Len(sfina) To 1 Step -1
        If Mid(sfina, i, 1) = "." Then
            '拡張子を取得
            ExGetExt = Mid(sfina, i + 1)
            Exit For
        End If
    Next
End Function

下記のVBAコードに変更してください。

Private Sub ExFolderSearchSub(ByVal tPath As Folder, ByRef lRow As Long, ByVal lCol As Long)
    Dim tInPath As Folder
    Dim tFile As File
    Dim s1 As String
    Dim sPush As String
        
    lPathCount = lPathCount + 1
    
    'サブフォルダ内の探索
    For Each tInPath In tPath.SubFolders
        '再帰呼び出し
        Call ExFolderSearchSub(tInPath, lRow, lCol)
    Next tInPath
    
    'フォルダ内のファイルを表示
    For Each tFile In tPath.Files
        s1 = LCase(ExGetExt(tFile.Name))
        If s1 = "txt" Or s1 = "html" Or s1 = "htm" Then
            If sPush <> tPath.Name Then
                lRow = lRow + 1
                Cells(lRow, lCol).Value = tPath.Path
                sPush = tPath.Name
            End If
            lRow = lRow + 1
            lFileCount = lFileCount + 1
            'セル内右寄せ
            Cells(lRow, lCol).HorizontalAlignment = xlHAlignRight
            Cells(lRow, lCol) = "∟"
            Cells(lRow, lCol + 1) = tFile.Name & " (" & tFile.DateLastModified & ")"
        End If
    Next tFile
    Set tPath = Nothing
End Sub


Homeへ > Excelでアプリケーションソフト2 > フォルダ内文字列検索ソフト

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


Copyright (c) Excel-Excel ! All rights reserved