📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルをエラー処理付きで取得する方法

日々の業務の中で、特定のフォルダから大量のファイルを手動で開き、情報を抽出するのは非常に時間がかかります。この記事では、Excel VBAを使って効率的にファイルを取得し、作業時間を大幅に短縮する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub GetFilesInFolder()
    Dim fso As Object, folder As Object, file As Object
    Dim targetFolder As String
    Dim files() As Variant
    Dim i As Long
    
    ' 対象のフォルダパスを指定
    targetFolder = "C:\Users\UserName\Documents"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    On Error GoTo ErrorHandler
    If Not fso.FolderExists(targetFolder) Then
        MsgBox "指定されたフォルダが存在しません。", vbExclamation
        Exit Sub
    End If
    
    ReDim files(1 To 1)
    i = 1
    For Each file In fso.GetFolder(targetFolder).Files
        ' ファイル名を配列に格納
        files(i) = file.Name
        i = i + 1
        ReDim Preserve files(1 To i)
    Next file
    
    MsgBox "フォルダ内のファイル一覧:", vbInformation, targetFolder & vbCrLf & Join(files, vbCrLf)
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
指定したフォルダパスが正しいか、またはその他のシステム環境問題がないか確認してください。