📘 Excel逆引き事典

【VBA】開いている全ブックをエラー処理付きでPDF保存する方法

日々の業務で大量のExcelファイルを扱っていると、個別に印刷やPDF保存を行うのは労力がかかります。この記事では、開いているすべてのワークブックを一括でPDF形式で保存できるVBAマクロを作成します。エラー処理も追加することで、安定した動作が期待できます。

サンプルコード

VBA
Option Explicit
Sub SaveAllBooksAsPDF()
    Dim wb As Workbook, ws As Worksheet
    Dim savePath As String
    Dim i As Integer
    
    ' フォルダ選択ダイアログを開く
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "保存先フォルダを選択してください"
        If .Show = -1 Then savePath = .SelectedItems(1) & "\"
    End With
    
    ' エラー処理を有効にする
    On Error GoTo ErrorHandler
    
    Application.ScreenUpdating = False
    For Each wb In Workbooks
        If Not wb.Name Like "*.xls*" Then Exit Sub  ' Excel以外のファイルは除外
        wb.Activate
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath & wb.Name & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    Next wb
    
    Application.ScreenUpdating = True
    MsgBox "全ブックをPDF保存しました。", vbInformation
    Exit Sub
ErrorHandler:
    MsgBox Err.Description & vbCrLf & "エラーが発生しました。", vbCritical
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。また、ワークブックに問題がないかもチェックしましょう。