PR

【VBA】ブックや特定シートをPDF形式で保存する

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、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

タイトルとURLをコピーしました