Excel VBA 複数シートを1つのpdfに保存する

普段、Excelで特定のフォーマットを使っていて、最終的にpdf化して保存することってないですか?

Excel VBAを使うことで、簡単にExcelをpdfにして保存することができます。

今回は、Excelをpdf化して保存する方法について解説します。

for eachの繰り返し処理を多く使っているため、使い方を知りたいという方は、以下の記事をご参照ください。

こんなあなたにおすすめ
  • 全シートを1つのpdfに保存したい
  • 全シートをシートごとにpdfに保存したい
  • 特定のシートをpdfに保存したい
  • 複数の特定のシートをpdfに保存したい
  • 選択したシートをpdfに保存したい

使用したExcelのフォーマット

下図のフォーマットと同様の内容(日付だけ異なる)を3つのシート分、用意しました。

今回は、こちらのExcelをpdf化して保存する方法について解説します。

  • ファイル名:template.xlsx
     ※Excelは保存せず実行したため、拡張子が”xlsm”ではなく”xlsx”になっています。
  • シート名
      (1) → 210628~210702
      (2) → 210705~210709
      (3) → 210712~210716

全シートを1つのpdfに保存したい

実際にコードを見ていきましょう。

コード

Sub test()

    Dim export_FilePath As String
    
    export_FilePath = ThisWorkbook.Path & "\test.pdf"   'ファイルパス & ファイル名を指定
    
    ThisWorkbook.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=export_FilePath
    
End Sub
●実行前
●実行後

実行すると、全シートが1つのpdfファイル「test.pdf」に保存されます。

全シートをシートごとにpdfに保存したい

実際にコードを見ていきましょう。

コード

Sub test()

    Dim filePath As String       'ファイルパス格納用の変数
    Dim ws As Worksheet          'ワークシートオブジェクト格納用の変数
     
    filePath = ThisWorkbook.Path & "\"    'ファイルのパスを変数に格納
          
    '全てのシートをPDF保存する
    For Each ws In Worksheets
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
                                Filename:=filePath & ws.Name & ".pdf"
    Next ws
    
End Sub
●実行前
●実行後

実行すると、全シートが各シートごとにpdfファイルに保存されます。

特定のシートをpdfに保存したい

実際にコードを見ていきましょう。

コード

Sub test()

    Dim export_FilePath As String
    
    export_FilePath = ThisWorkbook.Path & "\test.pdf"   'ファイルパス & ファイル名を指定
    
    Worksheets("210628~210702").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=export_FilePath, _
        OpenAfterPublish:=True  '作成したファイルを開く
    
End Sub

複数の特定のシートをpdfに保存したい

1つのpdfに保存

実際にコードを見ていきましょう。

コード

Sub test()

    Dim export_FilePath As String
    export_FilePath = ThisWorkbook.Path & "\test.pdf"   'ファイルパス & ファイル名を指定
    
    Worksheets(Array("210628~210702", "210712~210716")).Select
    
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=export_FilePath
    
    Worksheets(1).Select 'ワークシートの複数選択を解除
    
End Sub
●実行前
●実行後

シートごとにpdfに保存

実際にコードを見ていきましょう。

コード

Sub test()

    Dim export_FilePath As String
    export_FilePath = ThisWorkbook.Path & "\"   'ファイルパスを指定
    
    Dim sh As Variant
    Set sh = Worksheets(Array("210628~210702", "210712~210716"))
    
    Dim ws As Worksheet
    
    For Each ws In sh
        ws.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=export_FilePath & ws.Name & ".pdf"
    Next ws
    
    Worksheets(1).Select 'ワークシートの複数選択を解除
    
End Sub
●実行前
●実行後

まとめ

ここまで、Excel VBAでシートをpdf化して保存する方法について解説しました。

Excelのフォーマットを毎回手動でpdf化している方、ぜひ自動化に挑戦してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です