【Excel VBA】シートをPDFファイルとして出力(エクスポート)する方法

作成した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 引数 (任意)

印刷範囲を無視するかどうかをTrueFalseで指定します。

  • False (規定値): シートに印刷範囲が設定されている場合、その範囲のみをPDF化します。
  • True: 設定されている印刷範囲を無視して、シート全体をPDF化します。

⑤ OpenAfterPublish 引数 (任意)

PDFの作成後に、そのファイルを自動で開くかどうかをTrueFalseで指定します。

  • 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などの任意引数を活用することで、より便利な自動化が実現できる。

このメソッドをマスターすれば、請求書や報告書などの定型的なドキュメント発行プロセスを、ボタン一つで完結させることが可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次