普段、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化している方、ぜひ自動化に挑戦してみてください。