作成したExcelの資料を、他の人に共有したり、証憑として保存したりする際には、レイアウトが崩れず、誰でも開けるPDF形式に変換するのが一般的です。手作業でもPDF化は可能ですが、VBAを使えばこの操作をボタン一つで自動化できます。
この記事では、VBAでワークシートや特定のセル範囲をPDFファイルとしてエクスポートするための基本となる.ExportAsFixedFormat
メソッドの使い方を、詳しく解説します。
完成したVBAコード
以下が、「Sheet1」という名前のシートを、設定を指定してPDFとして出力するVBAコードです。
Sub SaveSheetAsPDF()
' 変数を宣言します
Dim targetSheet As Worksheet
Dim outputFilePath As String
' 操作対象のシートを設定
Set targetSheet = ThisWorkbook.Worksheets("Sheet1")
' PDFのファイルパスを決定 (Excelファイルと同じフォルダに、シート名で保存)
outputFilePath = ThisWorkbook.Path & "\" & targetSheet.Name & "_Report.pdf"
' シートをPDFとしてエクスポートします
targetSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=outputFilePath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
ExportAsFixedFormatメソッドの解説
.ExportAsFixedFormat
は、シートやセル範囲をPDFまたはXPS形式で出力するためのメソッドです。多くの引数がありますが、ここでは特に重要なものをいくつか紹介します。
① Type 引数 (必須)
出力するファイル形式を指定します。
xlTypePDF
: PDF形式で出力します。(通常はこちらを使用)xlTypeXPS
: XPS形式で出力します。
② Filename 引数 (必須)
保存するファイルのフルパスを文字列で指定します。ThisWorkbook.Path
を使えば、マクロが書かれているExcelファイルと同じフォルダを指定できるため便利です。 Filename:=ThisWorkbook.Path & "\出力ファイル名.pdf"
③ Quality 引数 (任意)
PDFの品質を指定します。
xlQualityStandard
(規定値): 標準品質。xlQualityMinimum
: 最低品質。ファイルサイズは小さくなりますが、画像の解像度などが落ちます。
④ IgnorePrintAreas 引数 (任意)
印刷範囲を無視するかどうかをTrue
かFalse
で指定します。
False
(規定値): シートに印刷範囲が設定されている場合、その範囲のみをPDF化します。True
: 設定されている印刷範囲を無視して、シート全体をPDF化します。
⑤ OpenAfterPublish 引数 (任意)
PDFの作成後に、そのファイルを自動で開くかどうかをTrue
かFalse
で指定します。
True
: PDF作成後、自動的に既定のPDFビューアーでファイルが開きます。すぐ内容を確認したい場合に便利です。False
(規定値): ファイルは保存されるだけで、自動では開きません。
特定のセル範囲だけをPDFにする方法
シート全体ではなく、特定のセル範囲だけをPDFとして出力したい場合は、Worksheet
オブジェクトではなくRange
オブジェクトに対して.ExportAsFixedFormat
メソッドを実行します。
Sub SaveRangeAsPDF()
' 変数を宣言します
Dim targetRange As Range
' PDF化したいセル範囲を指定
Set targetRange = ThisWorkbook.Worksheets("Sheet1").Range("B2:G30")
' 指定した範囲だけをPDFとしてエクスポート
targetRange.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Range_Export.pdf", _
OpenAfterPublish:=True
End Sub
このように、メソッドを呼び出す対象をWorksheet
からRange
に変えるだけで、簡単に出力範囲を限定できます。
まとめ
Excel VBAでPDFを作成する際の基本は、.ExportAsFixedFormat
メソッドです。
- シート全体(または印刷範囲)をPDF化する場合は、Worksheetオブジェクトから呼び出す。
- 特定のセル範囲のみをPDF化する場合は、Rangeオブジェクトから呼び出す。
OpenAfterPublish
などの任意引数を活用することで、より便利な自動化が実現できる。
このメソッドをマスターすれば、請求書や報告書などの定型的なドキュメント発行プロセスを、ボタン一つで完結させることが可能になります。