メールの内容を保存するためにPDFにして共有ファイルに保存することはあるでしょうか?
メールを一つ一つPDF変換するのは、腕も疲れるしめんどうくさいですよね…
このめんどうな作業、Outlookのマクロを利用して秒で終わらせてしまいましょう。
Outlookマクロで自動化したい作業概要
今回自動化したいのは下記のとおり
- Outlookの指定フォルダ内にあるメールをPDFに一括変換
- 変換したPDFの名前をメール件名にする
- 指定のフォルダに保存する
メールが1~2通であれば手作業でよいのですが、メール数が多くなると地味に時間をとられるのです。
Outlookマクロでメールを一括PDF化するための設定方法
Step1 自動化したい作業の詳細を箇条書きにする
まずは自動化したい作業を細かく箇条書きにしていきます。
- Outlookの名前空間を取得
- Outlookの「マクロ実行」フォルダを取得
- PDFを保存するフォルダパスを設定(デスクトップ上の「PDF(メール)」フォルダに保存)
- 「PDF(メール)」フォルダが存在しない場合は作成
- Outlookの「マクロ実行」フォルダ内のすべてのアイテムをループ
- ファイル名を件名に設定し、無効な文字を置換
- Wordを使ってメールをPDFに変換
- 完了後にメッセージBOXに「すべてのメールがPDFとして保存されました。」と表示する
箇条書きの頭に「’」をつけてそのままVBAコードのコメントとして利用しちゃいましょう
Step2 VBAのコードを作成する
Step1で箇条書きにした内容をOutlookマクロ用にVBAのコードとして書き出していきます。
実際に書き出したマクロは下記のようになります。
Sub SaveEmailsAsPDF()
Dim ns As NameSpace
Dim folder As folder
Dim item As Object
Dim mail As MailItem
Dim doc As Object
Dim pdfPath As String
Dim pdfFolder As String
'Outlookの名前空間を取得
Set ns = Application.GetNamespace("MAPI")
'「マクロ実行」フォルダを取得
Set folder = ns.GetDefaultFolder(olFolderInbox).Folders("マクロ実行")
'PDFを保存するフォルダパスを設定
pdfFolder = Environ("USERPROFILE") & "\Desktop\PDF(メール)\"
'「PDF(メール)」フォルダが存在しない場合は作成
If Dir(pdfFolder, vbDirectory) = "" Then
MkDir pdfFolder
End If
'フォルダ内のすべてのアイテムをループ
For Each item In folder.Items
If TypeOf item Is MailItem Then
Set mail = item
'ファイル名を件名に設定し、無効な文字を置換
pdfPath = pdfFolder & Replace(mail.Subject, "/", "_") & ".pdf"
'Wordを使ってメールをPDFに変換
Set doc = CreateObject("Word.Application")
doc.Documents.Add
doc.Selection.TypeText mail.Body
doc.ActiveDocument.SaveAs2 pdfPath, 17 ' 17 はPDF形式
doc.Quit False
End If
Next item
MsgBox "すべてのメールがPDFとして保存されました。", vbInformation
End Sub
Step3 コード編集画面に作成したVBAコードを貼り付ける
Outlookの開発タブから新規標準モジュールを作成して先ほど作成したVBAのコードを貼り付けて保存します。

Outlookでマクロを使えるように設定する方法について詳しくはこちらの記事をご参照ください。
これで設定完了です。
作成したマクロの実行
作成したマクロを実行する方法
早速作成したマクロを実行してみましょう
Outlookの「開発」タブをひらき、「マクロ」の下矢印をクリックすると作成したマクロが表示されます。
今回作成したマクロ「Project1.SaveEmailsAsPDF」を選択するとマクロが実行されます。

実行結果
今回はPDF化が終わるとメッセージBOXが表示されるように設定しています。
マクロ実行後に下記のようなメッセージBOXが表示されました。

デスクトップ上の保存先フォルダを確認すると無事PDFに変換されたファイルが保存されていました。

まとめ
Outlookのマクロを利用することで、メールのPDF化を自動化することができました。
私の場合、毎月30~50のメールを手作業でPDF化していたので、
1通あたり作業に1~2分と考えると約1時間かかってました。
マクロを利用することで年間にすると12時間弱の時間を短縮できた計算です。
このような地味な作業でも積み重なるとかなりの時間を使っています。
マクロを上手に利用してサクサク仕事を終わらせちゃいましょう。