← コード一覧へ戻る
実務ブック

すべてのシートをPDFで保存する

コードを保存したブックの、印刷対象になる表示シートを1つのPDFへ出力します。非表示シートは含みません。

実行前に確認

  • タイトルの「すべて」は非表示シートまでを意味しません。印刷範囲が設定されているシートはその範囲だけが出力されます。
  • 同名ファイルがある場合は上書きせず中止します。URL形式のクラウド保存先はこの例の対象外です。

1サンプルコード

Sub ブックをPDFで保存する()
    Dim outputPath As String
    If ThisWorkbook.Path = "" Then
        MsgBox "先にブックをローカルフォルダーへ保存してください"
        Exit Sub
    End If
    outputPath = ThisWorkbook.Path & Application.PathSeparator & "売上レポート.pdf"
    If Dir(outputPath) <> "" Then
        MsgBox "同名PDFがあるため中止しました。ファイル名を変えてください"
        Exit Sub
    End If
    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=outputPath, Quality:=xlQualityStandard, _
        IgnorePrintAreas:=False
    MsgBox "保存先: " & outputPath
End Sub

図で見るファイルの変化

イメージ図

概念図:保存済みブックと同じフォルダーにPDFを追加します。

  1. 変更前

    ローカルに保存済みのブック。売上レポート.pdfはまだない

  2. マクロ:確認

    保存先があり、同名PDFがないことを確認

  3. マクロ:出力

    表示シートの印刷対象を、設定された印刷範囲でPDF化

  4. 変更後

    同じフォルダー ├ 元のブック └ 売上レポート.pdf

未保存・同名PDFありなら中止。非表示シートは含まず、元ブックをPDFへ置き換える処理ではありません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    ブックをローカルの作業フォルダーへ保存し、各シートの印刷範囲・改ページを確認します。

  3. 3

    コードの「売上レポート.pdf」を希望のファイル名へ変更します。同じ名前のPDFがないことを確認します。

  4. 4

    実行するSubの内側にカーソルを置き、F5キーを押します。

  5. 5

    ブックと同じフォルダーにPDFが作られます。表示された保存先を開き、ページを確認します。同名PDFがある場合は上書きせず中止します。

使っている機能の公式ドキュメント(Microsoft Learn)