【マクロVBA】PDF化!選択した単体・複数のシートをPDFで保存・出力・作成する方法

便利技

PCでもよく見かけるPDFですが、エクセルのデータもPDFで保存・作成することができます

通常は印刷すると紙で出てきますが、その状態をファイル形式で
保存する事ができるファイルになります。

つまり紙の電子化ともいえますね。

資料として配布したり、文書としてファイル保管したい場合にはとても役立つ
PDFですがExcelのVBAでも保存・作成ができます。

ショートカットキーに登録すると、とても便利なので是非参考にしてみてください。
それでは見ていきましょう。




■忙しい人向けのコピペ用プログラム

Sub アクティブシートのPDF化()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF
End Sub

⬛︎こんな事ができるようになる!

選択した単体・複数のシートをもとにPDFファイルを作成・保存することができる

⬛︎忙しい人向けのオススメコピー用プログラム

Sub アクティブシートのPDF化()

Dim Ans As String

Ans = InputBox(“保存するファイル名を入力してください。”)

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”C:\PDF保存先” & “\” & Ans & “.PDF”, Quality:=xlQualityStandard, OpenAfterPublish:=True, From:=2, To:=4

End Sub

⬛︎構文の仕組み

PDF化の対象.ExportAsFixedFormat (Type、 FileName、 Quality、 IncludeDocProperties、 IgnorePrintAreas、 From、 To、 OpenAfterPublish、 FixedFormatExtClassPtr)

各引数については下記表を参照してみてください。

 

・引数の詳細

名前省略可/不可データ型説明要約
Type必須XlFixedFormatTypexlTypePDF または xlTypeXPS のいずれかを指定できます。PDFファイル作成時は「xlTypePDF
FileName省略可能バリアント型保存するファイルの名前を示す文字列。 完全なパスを含めるか、Excel によって現在のフォルダーにファイルが保存されます。ファイル名・パス名を入力し、保存先を指定する
Quality省略可能バリアント型xlFixedFormatQuality 定数 (xlQualityStandard または xlQualityMinimum) のいずれかに設定できます。画質を決定する。容量を気にしない場合は「xlQualityStandard」
IncludeDocProperties省略可能バリアント型ドキュメント プロパティを含める必要があることを示す 場合は True に設定するか、省略されたことを示す 場合は False に 設定します。作成者などといった情報をPDFに引き継ぐ際は「True」を記入
IgnorePrintAreas省略可能バリアント型True に設定すると、発行する場合に印刷範囲が無視されます。 False に設定すると、発行時に設定された印刷領域が使用されます。通常の印刷範囲をPDF化したい場合は「False(省略)」
From省略可能バリアント型発行を開始するページのページ番号を指定します。 この引数を省略すると、先頭のページから発行が開始されます。PDF化の初めのページ数を入力
To省略可能バリアント型発行を終了するページの番号を指定します。 この引数を省略すると、最後のページまで発行します。PDF化の終わりのページ数を入力
OpenAfterPublish省略可能バリアント型True に設定 すると、発行後にビューアーにファイルが表示されます。 False に設定すると、ファイルは発行されますが、表示されません。作成後に確認でPDFを開くか選択。開きたい場合は「True」を選択
FixedFormatExtClassPtr省略可能バリアント型FixedFormatExt クラスへのポインターです。
引用元:Workbook.ExportAsFixedFormat メソッド (Excel) | Microsoft Docs

⬛︎実際にプログラムを作成する

では実際に選択したシートをPDFにしてみたいと思います。
再度構文を見ていきましょう。

PDF化の対象.ExportAsFixedFormat (Type、 FileName、 Quality、 IncludeDocProperties、 IgnorePrintAreas、 From、 To、 OpenAfterPublish、 FixedFormatExtClassPtr)

ここで省略ができないのは

PDF化の対象.xportAsFixedFormat (Type


となります。
つまり、Type以外はオプションと捉えていただいても構いません。

ではそれぞれ見ていきましょう。

まず、「PDF化の対象」ですが、今回はアクティブシートをPDF化させるので
ActiveSheet.」となります。
つぎに「Type」はPDFまたはxsp形式での保存が可能です。
今回はPDFなので「xlTypePDFとなります。ちなみにxsp形式の場合は「 xlTypeXPS」となります。

ではプログラムを作成してみましょう。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF

End Sub

実はこれだけでPDF化のプログラムは機能します。
ではプログラムを実行してみましょう。

見本で下図のシートを用意しました。

こちらのシートを選択した状態で実行すると…

PDFファイルが作成できました。

この場合、保存先はカレントディレクトリ(設定していなければドキュメント)でファイル名は対象のブック名になります。
見本では「エクセル虎の巻」というブック名なのでそのままファイル名として保存されています。

この保存先やファイル名などは構文の「Type」以降で設定することができます。
次の項目ではそちらのオプションの部分に当たる説明をしたいと思います。

今回は1つのシートをPDF化しましたが、複数のシートを選ぶと選んだシート分、
PDFファイルを作成
してくれます。

⬛︎PDFファイルで保存・作成する際の詳細設定について

ではPDFで保存する際の詳細設定について紹介します。
こちらの内容をマスターすれば保存先やファイル名、保存・作成時の確認などを
コントロールすることができます。

では再度、構文とその内容を見ていきましょう。

PDF化の対象.ExportAsFixedFormat (Type、 FileName、 Quality、 IncludeDocProperties、 IgnorePrintAreas、 From、 To、 OpenAfterPublish、 FixedFormatExtClassPtr)

ここで抑えておきたい項目について説明します。
では1つずつ見ていきましょう。

・FileName…保存先・ファイルネームを指定する

まずは構文の「FileName」から見ていきましょう。
こちらは英語の意味通り、保存する際のファイルの場所・ファイル名を設定できます。
使い方としては「FileName:=”保存先ファイルパス&ファイルの名前”&”.pdf”」となります。

では例を紹介しましょう。
今回は保存先を「C:\PDF保存先」とし、ファイル名を「打ち合わせ資料」としたいと思います。
新しく作成したフォルダなのでデータはありません。

「File name」の構文に当てはめるとこのようになります。

Filename:=”C:\PDF保存先\打ち合わせ資料.PDF”
変数などでファイル名と保存先のパスを分けたい場合はこちらです。
Filename:=”C:\PDF保存先” & “\” & “打ち合わせ資料” & “.PDF”

では全体のプログラムを見ていきましょう。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”C:\PDF保存先” & “\” & “打ち合わせ資料” & “.PDF”

End Sub

実行した結果はこちらです。

フォルダ「C:\PDF保存先」に「打ち合わせ資料」として保存されました。

ちなみに保存先を指名せずに「Filename:=”打ち合わせ資料.PDF”」のようにファイル名だけ入力すると
ドキュメント内に保存されます。

・Quality・・・画質・ファイル容量をコントロールする

次は構文の「Quality」にあたる部分を紹介します。
こちらは「xlQualityStandard」「xlQualityMinimum」のどちらかになります。

内容としてはPDF化した際の画質を表します。
「xlQualityStandard」は通常の画質になり
「xlQualityMinimum」は画質を落としたファイルとなります。

プログラムとしてはこのように使用します。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityStandard

End Sub
もちろん、「xlQualityMinimum」の方がファイルサイズは小さくなります。
文字のみであればどちらも大差ありませんが、写真の画質は変わってきます。

例で下図に「xlQualityStandard」と「xlQualityMinimum」で保存したPDFを
載せているので比較してみてください。

・IncludeDocProperties…ドキュメント プロパティを含めるか選択する

こちらはドキュメントプロパティを含めてPDFを作成するか選択できます。
作成者などといったファイルの情報をPDFにも反映させるかの選択ですね。

こちらは「True」「False」で選択するのですが省略時は自動で「False」になるので
ドキュメントプロパティを含めたい場合には「True」を指定してください。

見本のプログラムを紹介します。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, IncludeDocProperties:=True

End Sub

・「From」「To」でPDFを作成するシート番号を設定する

こちらは複数のページをPDF化する際に指定した範囲のページのみ作成したい時に使用します。
From」が開始位置で「To」が終了位置です。

仮にPDF化する際に通常であれば10ページ出力するようなシートがあったとします。
その際に5〜8ページだけPDF化したい場合は「From」を5、「To」を8にします。

プログラムはこのようになります。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, From:=5, To:=8

End Sub

・OpenAfterPublishでPDFファイル作成後に確認の有無を設定する

こちらはPDFのファイル作成後に作成したファイルを自動で開いて確認するかの有無を設定します。
入力する内容として「True」または「False」を選択します。

「True 」を選んだ場合はPDFファイル作成後に作成したファイルが自動で
開きますが、「False」を選んだ場合は保存して終了
です。
ちなみに入力を省略した場合は「False」と同様に、確認がなく保存されるのみとなります。

確認を行う見本プログラムを参考に載せておきます。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, OpenAfterPublish:=True

End Sub

・見本のプログラムを紹介

上記オプションは複数組み合わせることができます。
下記のプログラムを見本に見ていきましょう。

Sub アクティブシートのPDF化()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”見本.PDF”, Quality:=xlQualityStandard, OpenAfterPublish:=True, From:=2, To:=4

End Sub

こちらのプログラムはファイル名を「見本」とし、通常の画質で、PDFを作成後は確認
するようにしています。さらにページ数は2〜4ページのみPDF化するといった
プログラムになっています。
このように複数の条件でも作成することができます。

⬛︎応用編

先程のプログラムではファイル名は「見本」で固定されてしまいます。
しかし、別のPDFを作成する場合には「見本」の部分を打ち替えないと
PDFファイルを上書きすることになってしまいます。

セルの値をファイル名にする方法や、現在の日時をファイル名に組み込む
方法もありますが、管理しやすく汎用性のある方法を紹介します。

使用するのは「InputBox」です。
こちらはプログラム実行中に文字・数値が入力できるポップアップが表示され、
入力した文字・数値を変数に格納できる物になります。

PDF化のプログラムを実行して、入力した文字・数値をファイル名にすることが
できます。

では見本のプログラムを見てみましょう。

Sub アクティブシートのPDF化()

Dim Ans As String

Ans = InputBox(“保存するファイル名を入力してください。”)

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”C:\PDF保存先” & “\” & Ans & “.PDF”, Quality:=xlQualityStandard, OpenAfterPublish:=True, From:=2, To:=4

End Sub

実行した結果はこちらです。

表示されたポップアップに「独学エクセル塾」と入力しました。
「OK」を押すと、、、

「独学エクセル塾」というファイル名のPDFファイルを作成することが出来ました。
このブログラムだと、その都度ファイル名を変えるので汎用性があって便利です。

さらにこのプログラムをプライベートで記録してショートカットキーに登録しておけば
どのファイルでもPDF化できるので便利です。
私も「Ctrl」+「Shift」+「P」でPDF化のプログラムが走るようにしています。
ショートカットキー登録については下記記事を参照してみてください。

【マクロVBA】ショートカットキーへ割り付け・設定を行い、プロシージャ・プログラムを実行する! ► 独学エクセル塾 (dokugakuexcel.com)

 

⬛︎公式の説明


わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Workbook.ExportAsFixedFormat メソッド (Excel) | Microsoft Docs

⬛︎まとめ

いかがだったでしょうか。
PDFファイルは様々な場面で見かけますが
直接PDF化できるのは便利ですよね。

是非参考にしてみて下さい。
それでは次回の記事でお会いしましょう。

コメント