エクセルのシートをPDFに変換して保存したい場合には、PrintOutメソッドを使います。
PrintOutメソッドはシートを印刷する際にも使いますが、PDFファイルとして出力したいときにも使用します。
今回はPrintOutメソッドを使ってエクセルをPDFに変換してファイル名を付けて保存する方法について徹底的に説明していきます。
印刷(PrintOut)|エクセルをPDFに変換してファイル名を付けて保存する方法
PrintOutメソッドでPDFに出力し、ファイル名を付けて保存する構文
オブジェクト.PrintOut ActivePrinter:=”PDF出力用の仮想プリンタ名”, PrToFileName:=”ファイル名”
オブジェクトには、ワークシートやグラフ、ブックなどを指定できます。
引数「ActivePrinter」には、インストールしたPDF出力用の仮想プリンタの名前及びポート名を指定します。
いきなり面倒な感じになってますが、安心してください。以下に仮想プリンタ名及びポート名の調べ方について説明します。
PDF出力用の仮想プリンタ名及びポート名の調べ方
PDF出力用の仮想プリンタを「現在使用しているプリンター」に設定します。
1.エクセルシート上で「ファイル」タブをクリックする。
2.「印刷」をクリックし、「プリンター」メニューでPDFファイルを出力する仮想プリンタを選択する。今回は「Microsoft Print to PDF」を選択しています。
これで、仮想プリンタを「 現在使用しているプリンター 」に設定完了しました。
次は設定した仮想プリンタ名を調べます。
3.VBEにおいて、「表示」タブを選択し、「イミディエイトウインドウ」をクリックし、イミディエイトウインドウを立ち上げる
4.イミディエイトウインドウに「?Application.ActivePrinter」と入力してEnterキーを押す。
5.2行目に現在使用しているプリンタの名前及びポート名が表示されます。今回は「Microsoft Print to PDF on Ne01:」と表示され、これが 「PDF出力用の仮想プリンタ名」になります。
エクセルをPDFに変換してファイル名を付けて保存する方法のサンプルコード
サンプルコードは以下のようになります。サンプルコードでは、PDFファイルの出力先をエクセルファイルと同じ場所(フォルダ)に指定しています。
Sub PDFで出力()
Dim myPath As String
myPath = ActiveWorkbook.Path
ActiveSheet.PrintOut ActivePrinter:="Microsoft Print to PDF on Ne01:", _
prtofilename:=myPath & "出力したファイル.pdf"
End Sub
実行すると、エクセルファイルと同じ場所に「出力したファイル.pdf」というファイル名のPDFファイルが保存されます。
【まとめ】印刷(PrintOut)|エクセルをPDFに変換してファイル名を付けて保存する方法
エクセルシートをファイル名を付けてPDFファイルとして出力するには、PrintOutメソッドを使って
オブジェクト.PrintOut ActivePrinter:=”PDF出力用の仮想プリンタ名”, PrToFileName:=”ファイル名”
のように記述します。
PDF出力用の仮想プリンタ名は、仮想プリンタを現在使用しているプリンタに設定した後、イミディエイトウインドウに「?Application.ActivePrinter」と入力することで確認できます。
エクセルをPDFファイルとして出力する機会は多いと思いますので、ぜひ覚えておいてくださいね。
参考:Excel VBA入門 その86:VBAでPDFを同じフォルダに保存する方法
コメント
[…] 参考:Excel VBA入門 その60:印刷(PrintOut)|エクセルをPDFに変換してファイル名を付… […]
こんにちは。
とてもためになる記事ありがとうございます。
質問させていただきたいのですが、Microsoft Print to PDFで「複数シート(ここでは2シート2ページを想定)」を選択し印刷をかけると、1/2ページは期待通りにPDFで指定のフォルダへ保存されるのですが、2/2ページは名前を付けて保存するようウィンドウが開き、結果的にバラバラに保存されてしまいます。もし解決策などありましたらご教示いただけないでしょうか。よろしくお願いいたします。