Excel VBAを使ってセキュリティアラートや警告メールを「セキュリティアラート」フォルダに自動で移動する方法

この記事では、Excel VBAを用いてOutlookのセキュリティアラートや警告メールを特定のフォルダ、「セキュリティアラート」フォルダに自動的に移動する方法について詳しく解説します。また、その他の応用例やその実装方法も提供いたします。

目次

Excel VBAの基本

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

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

VBAを使ってメールを自動整理するメリット

VBAを用いることで、メールの整理が効率的に行えます。特に大量のメールが届くビジネスシーンにおいて、重要な警告メールやセキュリティ関連のメールを見逃すリスクを低減できます。手動での作業を自動化することにより、時間の節約とミスの削減が期待できます。

基本のコード


Sub MoveSecurityAlertsToFolder()
    Dim OutlookApp As Object
    Dim Namespace As Object
    Dim Inbox As Object
    Dim Emails As Object
    Dim Email As Object
    Dim TargetFolder As Object

    Set OutlookApp = CreateObject("Outlook.Application")
    Set Namespace = OutlookApp.GetNamespace("MAPI")
    Set Inbox = Namespace.GetDefaultFolder(6)
    Set TargetFolder = Inbox.Folders("セキュリティアラート")

    For Each Email In Inbox.Items
        If InStr(1, Email.Subject, "セキュリティアラート") > 0 Or InStr(1, Email.Subject, "警告") > 0 Then
            Email.Move TargetFolder
        End If
    Next Email
End Sub

コードの詳細解説

このコードはOutlookのInbox内のメールを検査し、その中で”セキュリティアラート”や”警告”という文字がタイトルに含まれるメールを「セキュリティアラート」フォルダに移動するものです。

– `OutlookApp`、`Namespace`、`Inbox`、`Emails`、および`Email`はOutlookオブジェクトの参照を保持するための変数です。
– `InStr`関数は文字列内に特定の文字列が存在するかどうかを確認するために使用されます。

応用例

1. 特定のメールアドレスからのメールを移動


Sub MoveEmailsFromSpecificSender()
    '...(上のコードと同じ部分を省略)

    For Each Email In Inbox.Items
        If Email.SenderEmailAddress = "alert@example.com" Then
            Email.Move TargetFolder
        End If
    Next Email
End Sub

このコードは特定のメールアドレスからのメールを指定のフォルダに移動します。

2. メールの本文に特定のキーワードが含まれる場合に移動


Sub MoveEmailsByBodyContent()
    '...(上のコードと同じ部分を省略)

    For Each Email In Inbox.Items
        If InStr(1, Email.Body, "重要なお知らせ") > 0 Then
            Email.Move TargetFolder
        End If
    Next Email
End Sub

このコードはメールの本文に「重要なお知らせ」というキーワードが含まれる場合、そのメールを指定のフォルダに移動します。

3. 一定の日付以前のメールを移動


Sub MoveEmailsBeforeDate()
    '...(上のコードと同じ部分を省略)
    Dim TargetDate As Date
    TargetDate = DateSerial(2023, 1, 1)
    For Each Email In Inbox.Items
        If Email.ReceivedTime < TargetDate Then
            Email.Move TargetFolder
        End If
    Next Email
End Sub

このコードは2023年1月1日より前に受信したメールを指定のフォルダに移動します。

まとめ

Excel VBAを活用することで、Outlookのメール整理作業を大幅に効率化することができます。上記の例を参考に、自分のニーズに合わせてVBAコードをカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次