📘 Excel逆引き事典

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

日々の業務では大量のデータを扱うことが多いと思います。その中でも特定の条件(例えば、名前が「報告書」で始まるファイル)に該当するエクセルファイルだけをPDF形式で一括保存したいことがあります。この記事では、VBAを使用して指定したフォルダ内の全エクセルファイルを部分一致でPDFに変換し保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveMatchingFilesAsPDF()
    Dim fso As Object, folder As Object, file As Object
    Dim wb As Workbook, ws As Worksheet
    Dim filePath As String, fileName As String, savePath As String
    Dim searchPattern As String
    
    ' 検索パターンを設定(例:"報告書*.xlsx")
    searchPattern = "報告書*.xlsx"
    
    ' フォルダパスを指定
    filePath = "C:\Users\YourName\Documents\Reports"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(filePath)
    Application.ScreenUpdating = False
    For Each file In folder.Files
        If file.Name Like searchPattern Then
            ' ファイルを開く
            Set wb = Workbooks.Open(file.Path)
            
            ' 保存先パスを設定(ファイル名の変更が必要な場合はここで行う)
            savePath = filePath & "\" & Left(file.Name, InStrRev(file.Name, ".") - 1) & ".pdf"
            
            ' PDFとして保存
            wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
            
            ' ファイルを閉じる
            wb.Close SaveChanges:=False
        End If
    Next file
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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