📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルを完全一致で取得する方法

日々の業務で大量のファイルを扱う場合、特定の条件に合致するファイルを手動で探すのは時間と労力がかかります。この記事では、Excel VBAを使用して、指定したフォルダ内から完全一致でファイル名を取得し、効率的に業務を行う方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub GetFilesByExactMatch()
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim targetFolder As String
    Dim filesList() As Variant
    Dim i As Long
    
    ' 目的のフォルダパスを指定
    targetFolder = "C:\Users\username\Documents"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(targetFolder)
    
    ReDim filesList(1 To folder.Files.Count)
    i = 0
    For Each file In folder.Files
        If file.Name Like "*.txt" Then ' 完全一致の条件を指定(例:特定の拡張子)
            i = i + 1
            ReDim Preserve filesList(1 To i)
            filesList(i) = file.Path
        End If
    Next file
    
    ' 取得したファイルパスをシートに出力する例
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    For i = 1 To UBound(filesList)
        ws.Cells(i, 1).Value = filesList(i)
    Next i
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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