📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルを部分一致で抽出する方法

毎回手作業で特定のフォルダ内の全ファイルから部分一致するファイルを探しているアナタ!このマクロを使えば一瞬で解決です。指定した文字列を含むファイルだけをリストアップします。

サンプルコード

VBA
Option Explicit
Sub ExtractFilesWithPartialMatch()
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim targetFolder As String
    Dim partialMatchText As String
    Dim filesList() As Variant
    Dim i As Long, j As Long
    
    ' 検索対象フォルダと部分一致文字列を指定
    targetFolder = "C:\Users\YourName\Documents"  ' フォルダパスを適切に設定してください
    partialMatchText = "example"                    ' 部分一致する文字列を設定してください
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(targetFolder)
    ReDim filesList(1 To 10) As Variant   ' 初期配列サイズ(適宜調整可)
    j = 1
    
    Application.ScreenUpdating = False
    For Each file In folder.Files
        If InStr(file.Name, partialMatchText) > 0 Then
            ReDim Preserve filesList(1 To j)
            filesList(j) = file.Path
            j = j + 1
        End If
    Next file
    
    ' ファイルパスをシートに書き出す
    With ThisWorkbook.Sheets("Sheet1")
        .Cells.ClearContents
        For i = LBound(filesList) To UBound(filesList)
            .Cells(i + 1, 1).Value = filesList(i)
        Next i
    End With
    
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。