Excel VBAを使ってメールの内容をPDFで自動保存する方法

この記事では、Excel VBAを使用して、メールの内容をPDFで自動保存する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに応用例を含めています。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAによるメールの自動PDF保存の基本

Excel VBAを使用すると、様々な自動処理が可能になります。このセクションでは、メールの内容をPDFとして自動保存する基本的な手法について解説します。

VBAコードの概要

以下のVBAコードは、OutlookのメールをPDFとして自動保存するものです。このコードは、OutlookとExcelが互いに連携するためのものであり、Excel側でマクロを実行することでOutlookのメール内容をPDFに変換し、指定したフォルダに保存します。


Sub SaveEmailAsPDF()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim olFolder As Object
    Dim olItem As Object
    Dim strPath As String

    ' Outlookを開く
    Set olApp = CreateObject("Outlook.Application")
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(6) '受信トレイ

    ' PDFを保存するパス
    strPath = "C:\YourPath\"

    ' 最新のメールを取得
    Set olItem = olFolder.Items.GetLast

    ' メールをPDFとして保存
    olItem.SaveAs strPath & olItem.Subject & ".pdf", 17 'OutlookのPDF形式

    Set olItem = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
End Sub

コードの詳細解説

1. まず、Outlookのオブジェクトを初期化します。
2. 次に、MAPI(Messaging Application Programming Interface)を使ってOutlookのメールボックスにアクセスします。
3. 受信トレイをターゲットとし、その中の最新のメールを取得します。
4. 最後に、取得したメールを指定したパスにPDFとして保存します。

応用例

VBAを使った自動化の魅力は、基本のコードをベースに様々なカスタマイズが可能であることです。以下に、この基本のコードを応用した例をいくつか紹介します。

応用例1: 特定のキーワードが含まれるメールのみをPDF保存

この応用例では、特定のキーワードが含まれるメールのみをPDFとして保存します。


Sub SaveSpecificEmailAsPDF()
    '... [上記の初期化部分は同じ]
    Dim Keyword As String
    Keyword = "重要"

    ' 最新のメールがキーワードを含む場合のみPDFとして保存
    If InStr(1, olItem.Subject, Keyword, vbTextCompare) > 0 Then
        olItem.SaveAs strPath & olItem.Subject & ".pdf", 17
    End If
    '... [後処理部分は同じ]
End Sub

応用例2: メールを受信した日付でフォルダ分けして保存

受信したメールを日付毎のフォルダに保存する方法です。


Sub SaveEmailByDate()
    '... [初期化部分は同じ]
    Dim DateFolder As String
    DateFolder = Format(olItem.ReceivedTime, "yyyy-mm-dd")

    ' 日付毎のフォルダにメールをPDFとして保存
    olItem.SaveAs strPath & DateFolder & "\" & olItem.Subject & ".pdf", 17
    '... [後処理部分は同じ]
End Sub

応用例3: 添付ファイルも一緒に保存

メールの本文だけでなく、添付ファイルも一緒に保存する方法です。


Sub SaveEmailWithAttachments()
    '... [初期化部分は同じ]
    Dim Attach As Object

    ' メールをPDFとして保存
    olItem.SaveAs strPath & olItem.Subject & ".pdf", 17

    ' 添付ファイルも保存
    For Each Attach In olItem.Attachments
        Attach.SaveAsFile strPath & Attach.FileName
    Next Attach
    '... [後処理部分は同じ]
End Sub

まとめ

Excel VBAを利用してOutlookのメールをPDFで自動保存する方法を学びました。基本的な保存方法から、応用例を通じてさまざまなカスタマイズの方法も学べたかと思います。これを機に、Excel VBAの機能を活用して効率的な業務を目指してみてはいかがでしょうか。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次