041 メールをPDF化する方法 その3(PrintOutメソッド)

こんにちは、くのへ@MasazaneKunoheです。
Outlook VBAでメールをPDF化する方法を3種ほど確認しました。

Outlook VBAにはExportAsFixedFormatメソッドが無い(*)ので、PDF化は意外と難しい感じでした。 (*) ExcelやWord VBAにはあるのに、、、
今回は「その3」として、PrintOutメソッドを使う方法を紹介します。

その3 PrintOutメソッドを使う方法

コード

Outlook VBEに次のコードをコピペで動くと思います。
ただし、最後の”いつものプリンタ”のところは自分がいつも使っているプリンタ名にして下さい。

Sub PDF化_PrintOutメソッド版()

  Dim objItem As Object
  Set objItem = ActiveExplorer.Selection(1)
  
  Dim WSHnet As Object
  Set WSHnet = CreateObject("WScript.Network")
  
  WSHnet.SetDefaultPrinter "Microsoft Print to PDF"
  
  objItem.PrintOut
  
  WSHnet.SetDefaultPrinter "いつものプリンタ"
  
End Sub

ポイント解説

このコードのポイントはWScript.Networkの力を借りて、デフォルトのプリンタをMicrosoft Print to PDFに切り替えてPrintOutメソッドを使い印刷し、そしてまたいつものプリンタに戻しているところです。
なんとなくコードを見れば分かりますね。

PrintOutメソッドのところでダイヤログが開き、保存先およびPDFファイル名が聞かれますので、それに入力すると任意のフォルダ・ファイル名で保存できます。
ちなみに出来上がりはこんな感じです。

PrintOutメソッドについて

OutlookのPrintOutメソッドの書式は次のようになります。
これで「規定」のプリンタで印刷できます。

アイテム.PrintOut

そのため、WSHのお力を借りて、既定のプリンタをMicrosoft Print to PDFに設定すればPDF化することができる、という仕組みです。

(余談)ExcelやWordだったら

ExcelでPrintOutメソッドを使っている方はご注意頂きたいのですが、ExcelのPrintOutメソッドだと、引数で使うプリンタを指定できます。

ExcelのPrintOutメソッドはこちら(ActivePrinterのところで指定できる)

でもOutlookではできないんです。。。

さらに、Word VBAを使える方は、WSHなど使わずに、Application.ActivePrinterプロパティでプリンタ設定を変えられるので、ActivePrinterで良くね?と思うかもです。

WordのActivePrinterメソッドはこちら

でもOutlookにActivePrinterプロパティが無いんです。。。

ということでOutlookで印刷機能を使ってPDF化しようと思ったら、WSHを使ってプリンタを切り替えるあたりで実装するしかないかな~と思います。


ではまた別の記事で~
🦅バサバサ~

その1はこちら(Word VBAのお力を借りる方法)
その2はこちら(Inspector.WordEditerを使う方法)

くのへスタジオはこちら。
Outlook-VBAコーナーはこちら。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です