📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ExcelファイルをPDF保存する方法

日々の業務で大量のExcelファイルを管理している場合、各ファイルを個別に印刷してPDF化するのは非常に手間がかかります。この記事では、特定フォルダ内の全Excelファイルを一括でPDFに変換し、エラー処理も含めて効率的な業務改善を行います。

サンプルコード

VBA
Option Explicit
Sub ConvertToPDF()
    Dim fso As Object, folder As Object, file As Object
    Dim wb As Workbook
    Dim filePath As String, fileName As String, savePath As String
    
    ' フォルダパスを指定
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\指定フォルダ名")
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' フォルダ内の全ファイルを処理
    For Each file In folder.Files
        If Right(file.Name, 4) = ".xls" Or Right(file.Name, 5) = ".xlsx" Then
            filePath = file.Path
            fileName = Left(file.Name, Len(file.Name) - 4)
            savePath = "C:\保存先フォルダ名\" & fileName & ".pdf"
            
            ' ファイルを開く
            Set wb = Workbooks.Open(filePath)
            On Error Resume Next
                ' PDFに変換して保存
                wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
            On Error GoTo 0
            ' エラーが発生した場合はエラーメッセージを表示
            If Err.Number <> 0 Then
                MsgBox "Error: " & Err.Description & " in file " & filePath
            End If
            wb.Close SaveChanges:=False
        End If
    Next file
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
ファイル名やフォルダパス、保存先パスが正しいか確認してください。