作成した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などの任意引数を活用することで、より便利な自動化が実現できる。
このメソッドをマスターすれば、請求書や報告書などの定型的なドキュメント発行プロセスを、ボタン一つで完結させることが可能になります。

 
			 
			 
			 
			 
			 
			 
			