Excel VBAを使ってメールを「プロモーション」フォルダへ自動移動する方法

Excel VBAを使用して、セールやプロモーションメールを自動的に「プロモーション」フォルダに移動させる方法を探している方へ。この記事では、その方法を具体的なコードと共に詳しく解説します。VBAの基本知識があれば、あなたも簡単に実装できるでしょう。実際のコード例を使用して、処理の背後にあるロジックを理解するのを助けます。

目次

Excel VBAの基本

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

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

VBAを使用してメールを自動分類する基本

ExcelのVBAは、Outlookのメール処理を自動化するための強力なツールとして利用することができます。特定のキーワードを含むメールを特定のフォルダに移動する処理は、以下のステップで行われます。

1. Outlookオブジェクトの参照を設定
2. メールボックス内のメールをループして、特定のキーワードを検索
3. 条件に一致するメールをターゲットフォルダに移動

基本コード


Sub MovePromotionEmails()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim olInbox As Object
    Dim olMail As Object
    Dim olItems As Object
    Dim i As Integer

    ' Outlookオブジェクトの参照を設定
    Set olApp = CreateObject("Outlook.Application")
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olInbox = olNamespace.GetDefaultFolder(6) ' 6 = Inbox
    Set olItems = olInbox.Items

    ' メールをループ
    For i = olItems.Count To 1 Step -1
        Set olMail = olItems.Item(i)
        If InStr(olMail.Subject, "セール") > 0 Or InStr(olMail.Subject, "プロモーション") > 0 Then
            olMail.Move olNamespace.GetDefaultFolder(6).Folders("プロモーション")
        End If
    Next i

    Set olMail = Nothing
    Set olItems = Nothing
    Set olInbox = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
End Sub

このコードは、受信トレイのメールをループし、件名に「セール」または「プロモーション」というキーワードが含まれている場合、それらのメールを「プロモーション」フォルダに移動します。

応用例1: メールの本文でのフィルタリング

メールの本文に特定のキーワードが含まれている場合に、そのメールを移動させたい場合があります。


If InStr(olMail.Body, "特別割引") > 0 Then
    olMail.Move olNamespace.GetDefaultFolder(6).Folders("プロモーション")
End If

応用例2: 複数のフォルダへの分類

異なるキーワードに基づいてメールを異なるフォルダに移動させることも可能です。


If InStr(olMail.Subject, "セミナー") > 0 Then
    olMail.Move olNamespace.GetDefaultFolder(6).Folders("セミナー")
ElseIf InStr(olMail.Subject, "アンケート") > 0 Then
    olMail.Move olNamespace.GetDefaultFolder(6).Folders("アンケート")
End If

応用例3: 特定の送信者からのメールを移動

特定の送信者からのメールのみを対象とすることもできます。


If olMail.SenderName = "example@example.com" And InStr(olMail.Subject, "プロモーション") > 0 Then
    olMail.Move olNamespace.GetDefaultFolder(6).Folders("プロモーション")
End If

まとめ

Excel VBAを使用することで、Outlookのメールを自動的に特定のフォルダに移動させる処理を簡単に実装することができます。上述の方法と実例を参考に、独自のニーズに合わせた自動メール処理を設定してみてください。

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

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

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

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

コメント

コメントする

目次