シートをPDF形式で出力する方法

今回の目標

Workbook オブジェクトや、Worksheet オブジェクトには、ExportAsFixedFormat メソッドがあります。
ExportAsFixedFormat メソッドで指定したオブジェクトを PDF形式や XPS形式で出力することができます。 今回は、Worksheets オブジェクトを PDF形式で出力する方法を解説します。

目標リスト

  • PDFファイルの出力できるようになる

説明

PDFファイルの出力(ExportAsFixedFormat)とは

ExportAsFixedFormat メソッドで PDF形式に出力することができます。

ExportAsFixedFormat メソッドの構文と引数一覧

ExportAsFixedFormat メソッドの構文と引数一覧です。

ExportAsFixedFormat メソッドの構文

ActiveSheet.ExportAsFixedFormat(Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)

ExportAsFixedFormat の引数一覧

引数省略規定値説明
Type不可(なし)xlTypePDF または xlTypeXPS を指定。PDFファイルの場合、xlTypePDFを指定する
FileName可能表下参照※出力先のパスやファイル名を指定。
Quality可能xlQualityStandardxlQualityStandard(標準の品質) または xlQualityMinimum(最小限の品質)を指定する。
IncludeDocProperties可能Falseドキュメント プロパティを含めるか。True:含める、False:含めない。
IgnorePrintAreas可能False印刷範囲を無視するか。True:無視する。False:無視しない。
From可能先頭ページ発行を開始するページ番号を指定。
To可能最終ページ発行を終了するページの番号を指定。
OpenAfterPublish可能False発行後に既定のビューアーで開くか。True:開く。False:開かない。
FixedFormatExtClassPtr可能-FixedFormatExt クラスへのポインター(通常、使用しない)。
※ FileNameを省略するとPCの個人アカウントにあるドキュメントフォルダにファイル名「PDF.pdf」で保存されます。なお、環境により保存先、保存ファイル名が変わる可能性があるため、FileNameを必ず指定してください。

PDFファイルを出力する

パス・ファイル名を指定してPDFファイルを出力する

パス・ファイル名を指定してPDFファイルを出力する方法です。
なお、パス・ファイル名を指定しなくても、PDFファイルを出力できますが、実用性がないため引数を指定します。 下のサンプルでは、マクロを実行している Excelファイルが保存されているフォルダに「サンプル.pdf」が出力されます。 なお、Excelファイルが1度も保存されていない場合は、(環境にもよりますが)通常はドキュメントフォルダに保存されます。

サンプルコード

Sub PdfOutput1()
    Dim savePath As String  '出力先のパスとファイル名を保存する
    ' 出力先のパスとファイル名を指定する
    savePath = IIf(ThisWorkbook.Path <> "", ThisWorkbook.Path & "¥", "")
    savePath = savePath & "サンプル.pdf"

    ' PDF形式でファイルを出力する
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=savePath
End Sub

出力結果

マクロを実行している Excelファイルが保存されているフォルダに「サンプル.pdf」が出力されます。 なお、Excelファイルが1度も保存されていない場合は、(環境にもよりますが)通常はドキュメントフォルダに保存されます。

出力範囲を指定してPDFファイルを出力する

PDFファイルに出力する前に「PageSetup.PrintArea」のプロパティを使用することで、出力範囲(印刷範囲)を指定できます。 下のサンプルでは、出力範囲(印刷範囲)を「セルA1~B30」に指定してPDFファイルを出力します。

サンプルコード

Sub PdfOutput2()
    Dim savePath As String  '出力先のパスとファイル名を保存する
    ' 出力先のパスとファイル名を指定する
    savePath = IIf(ThisWorkbook.Path <> "", ThisWorkbook.Path & "¥", "")
    savePath = savePath & "サンプル.pdf"
    
    '出力範囲(印刷範囲)を「A1:B30」に指定する
    ActiveSheet.PageSetup.PrintArea = "A1:B30"
    ' PDF形式でファイルを出力する
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=savePath
End Sub

出力結果

マクロを実行している Excelファイルが保存されているフォルダに「サンプル.pdf」が出力されます。 この PDFファイルは、出力範囲(印刷範囲)が「A1:B30」です。 なお、Excelファイルが1度も保存されていない場合は、(環境にもよりますが)通常はドキュメントフォルダに保存されます。

複数のシートを1つのPDFファイルで出力する

2シート以上を1つのPDFファイルにまとめて出力するには、「Worksheets(Array("出力対象のシート名1", "出力対象のシート名2")).Select」で出力する対象のシートを選択した状態で、 「ActiveSheet.ExportAsFixedFormat」で出力してください。
なお、PDFに出力するとき、PDFファイルの先頭のページとなるシートは、Array関数で指定した順番ではなく、シートの見出しが左に表示されているシートの順となります。 例えば、Array("Sheet1", "Sheet2")と指定しても、シートの見出しが左から順に "Sheet2" → "Sheet1" となっていると、"Sheet2" → "Sheet1" の順で出力されます。

サンプルコード

Sub PdfOutput3()
    Dim savePath As String  '出力先のパスとファイル名を保存する
    Dim actSheet As String  'アクティブなシート名を保存する
    
    ' 出力先のパスとファイル名を指定する
    savePath = IIf(ThisWorkbook.Path <> "", ThisWorkbook.Path & "¥", "")
    savePath = savePath & "サンプル.pdf"
    ' 処理前のアクティブなシート名を取得する
    actSheet = ActiveSheet.Name
    ' 印刷対象のシートを指定する
    ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2")).Select
    ' PDF形式でファイルを出力する
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=savePath
    ' アクティブなシートを元に戻す
    ThisWorkbook.Worksheets(actSheet).Select
End Sub

出力結果

マクロを実行している Excelファイルが保存されているフォルダに「サンプル.pdf」が出力されます。 この PDFファイルは、「Sheet1」と「Sheet2」が1つにまとめられています。 なお、Excelファイルが1度も保存されていない場合は、(環境にもよりますが)通常はドキュメントフォルダに保存されます。

注意点

出力したPDFファイルを開いたら、エラーが表示された

出力したPDFファイルを開いたときに、次のエラーが発生した時の対応方法です。
この文書を開くときにエラーが発生しました。このファイルにはページがないため開けません。
これは、出力対処のシートに何もデータがない状態でPDF出力して、そのPDFファイルを AcrobatReader で開くとこのエラーが表示されます。
対処方法としては「出力対象のシートを間違えていないか」や「出力範囲(印刷範囲)を間違えていないか」を確認しましょう。

ドキュメントプロパティについて

引数の「IncludeDocProperties」を True にすると、ドキュメントプロパティが出力したPDFファイルに載ります。 これは、作成者などの情報が含まれるため、PDFファイルをインターネット上に公開する場合等は、False にしましょう。 ※ 「IncludeDocProperties」の引数の指定を省略すると False(ドキュメントプロパティを載せない)となります。

関連リンク

ページの先頭へ