こんにちは、Ryoです。
Excelで作成したドキュメントをPDF化するケースは多々あると思いますが、VBAを使うことで一般的な手段の専用ソフトを用いて「印刷」からPDF変換する作業をしなくても、PDF化して保存することが出来ます。(Excel2007SP2以前は「2007MicroSoft Officeプログラム用MicroSoft PDF/XPS保存アドイン」のインストールが必要です)
PDFとして保存する際にファイル名や発行ページ指定も出来ますから便利ですので、今回はその方法について書いてみたいと思います。
1.サンプルコード
◆メソッド
PDF形式で保存する場合は「ExportAsFixedFormat」メソッドを使います。
構文はやや長くなってわかりにくいのですが、
オブジェクト.ExportAsFixedFormat(Type,Filename,Quality,IncludeDocProperties,
ignorePrintAreas,From,To,OpenAfterPublish,FixedFormatExtClassPtr)
このような形になっています。
私が使う上ではType,FileName,From,To,OpenAfterPublishを指定してますので、全て覚えなくとも大丈夫かと思いますが、指定する項目内容は以下になります。
◆指定する項目
値 | 指定内容 |
Type | 定数としてxlTypePDF、又はxlTypeXPS |
FileName | 保存するファイル名を指定 |
Quality | 設定はxlQualityStandard、又はxlQualityMinimum |
IncludeDocProperties | ドキュメントプロパティ含むことを示すTrue、省略されていることを示すFalse |
lgnorePrintAreas | Trueで印刷範囲無視、Falseで印刷範囲使用 |
From | 発行開始ページを指定(省略すると先頭から開始) |
To | 発行終了ページを指定(省略すると最後まで実行) |
OpenAfterPublish | Trueで発行(保存)後にビューアー表示、Falseで表示なし |
FixedFormatExtClassPtr | FixedFormatExtクラスへのポインター |
この中でIncludeDocProperties、FixedFormatExtClassPtrは指定せずいつも省略しているので、正直どのようなものか把握してないです。。。
では実際のサンプルコードに入ります。
◆1~3ページ(全て)をPDFで保存
Sub Sample1() ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF _ , Filename:=ThisWorkbook.Path & "\Sample1.pdf" _ , OpenAfterPublish:=True End Sub
これはブックに対しPDF形式を指定して、同じ場所にSample1.pdfとして保存し、ビューアーにて表示させるものです。
実行すると指定した場所に保存され、ビューアーで表示されます。
この場合、「全Sheet」を対象としてPDF発行していますので、特定ページのみとしたい場合を書いてみます。
◆3ページのみをPDFで保存
Sub Sample2() ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF _ , Filename:=ThisWorkbook.Path & "\Sample2.pdf" _ , From:=3, To:=3, OpenAfterPublish:=True End Sub
特定ページのみであればFromとToに同じ数値を指定すればOKです。
この実行結果も同様にPDFで保存され、
指定した3ページ目のみとなっています。
ここまではブック全体に対する指定ですので、全Sheetが対象なのですが指定するシートのみをPDFで保存したい場合は以下の様な記述をします。
◆特定シートをPDFで保存
Sub Sample3() Dim sh As Worksheet Set sh = ActiveSheet sh.ExportAsFixedFormat Type:=xlTypePDF _ , Filename:=ThisWorkbook.Path & "\Sample3.pdf" _ , OpenAfterPublish:=True End Sub
ワークシートオブジェクトの宣言をして、サンプルではアクティブシートをセットしていますが、他のシートを指定したい場合はActiveSheetの部分を適宜修正すればOKです。
(例えばSet sh = Worksheets(“Sheet3”)など)
これを実行することで指定したシートのみをPDFとして発行、保存することが出来ます。
2.まとめ
簡単な記述でPDFとして発行、保存することが出来ますしシート指定やページ指定もできますから、知っていると何かと便利ですのでお薦めです。
ちなみに指定するファイル名が既に保存場所にある場合、上書きされるようですからご注意くださいませ!
以上、ブックや指定シートをPDF形式で保存する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo