Excel VBAでOutlookのメールを自動分類する方法

Excel VBAを使用して、特定の条件に一致するメールを自動で指定のフォルダへ移動させる方法を解説します。具体的には、プライバシー通知や利用規約の更新関連のメールを「契約/通知」フォルダへ自動で移動させる例を中心に、そのコードと詳細な解説、さらなる応用例を3つ取り上げます。

目次

Excel VBAの基本

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

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

基本的なコードの構成

VBAを使用してOutlookのメールを操作する場合、Outlookオブジェクトモデルを利用します。このモデルは、Outlookの各種アイテムやフォルダ、メールアカウントなどを操作するためのクラスやメソッドを提供しています。


Sub MoveMailsBasedOnCondition()
    Dim OutlookApp As Object
    Dim Namespace As Object
    Dim Inbox As Object
    Dim Mail As Object
    Dim TargetFolder As Object
    
    ' Outlookアプリケーションを取得
    Set OutlookApp = CreateObject("Outlook.Application")
    Set Namespace = OutlookApp.GetNamespace("MAPI")
    
    ' 受信トレイと目的のフォルダを取得
    Set Inbox = Namespace.GetDefaultFolder(6) ' 6 は受信トレイ
    Set TargetFolder = Inbox.Folders("契約/通知")
    
    ' 受信トレイのメールを走査
    For Each Mail In Inbox.Items
        ' タイトルに「プライバシー通知」や「利用規約の更新」という文字列が含まれている場合
        If InStr(Mail.Subject, "プライバシー通知") > 0 Or InStr(Mail.Subject, "利用規約の更新") > 0 Then
            ' メールを「契約/通知」フォルダへ移動
            Mail.Move TargetFolder
        End If
    Next Mail

    ' オブジェクトを開放
    Set Mail = Nothing
    Set TargetFolder = Nothing
    Set Inbox = Nothing
    Set Namespace = Nothing
    Set OutlookApp = Nothing
End Sub

コードの詳細解説

このコードは、Outlookの受信トレイにあるメールの中から、「プライバシー通知」と「利用規約の更新」という文字列がタイトルに含まれるものを、「契約/通知」という名前のフォルダに移動させます。

1. 最初に、Outlookアプリケーションおよびその他の必要なオブジェクトを宣言します。
2. `Outlook.Application`オブジェクトを作成し、Outlookの「MAPI」ネームスペースを取得します。
3. `GetDefaultFolder(6)`メソッドを使用して受信トレイを取得します。ここでの数字「6」は受信トレイを意味します。
4. 受信トレイの下にある「契約/通知」というフォルダを取得します。
5. 受信トレイの全てのメールを走査し、指定した条件に合致するメールを「契約/通知」フォルダへ移動させます。

応用例

1. 送信者のメールアドレスに基づいてメールを分類する

特定の送信者からのメールを別のフォルダに移動することも可能です。


If Mail.SenderEmailAddress = "example@example.com" Then
    Mail.Move TargetFolder
End If

2. メールの受信日時に基づいて古いメールをアーカイブする

受信日時が一定期間以上前のメールをアーカイブフォルダに移動させることができます。


If Mail.ReceivedTime < Date - 30 Then ' 30日以上前のメール
    Mail.Move ArchiveFolder
End If

3. メールの添付ファイルの有無に基づいてメールを分類する

添付ファイルが含まれているメールのみを特定のフォルダに移動させることもできます。


If Mail.Attachments.Count > 0 Then
    Mail.Move AttachmentsFolder
End If

まとめ

Excel VBAを使用することで、Outlookのメールを効率的に管理する自動処理を実現できます。上記の例は基本的なものですが、これをベースにさまざまな条件や処理を追加・組み合わせることで、独自のメール整理ルールを構築することができます。

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

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

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

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

コメント

コメントする

目次