【Outlook時短術】Outlookのマクロを利用してメールを一括でPDFに変換してみた

マクロで時短 仕事
マクロで時短

メールの内容を保存するためにPDFにして共有ファイルに保存することはあるでしょうか?

メールを一つ一つPDF変換するのは、腕も疲れるしめんどうくさいですよね…

このめんどうな作業、Outlookのマクロを利用して秒で終わらせてしまいましょう。

Outlookマクロで自動化したい作業概要

今回自動化したいのは下記のとおり

  1. Outlookの指定フォルダ内にあるメールをPDFに一括変換
  2. 変換したPDFの名前をメール件名にする
  3. 指定のフォルダに保存する

メールが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時間弱の時間を短縮できた計算です。

このような地味な作業でも積み重なるとかなりの時間を使っています。

マクロを上手に利用してサクサク仕事を終わらせちゃいましょう。

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