Excel VBAを利用してOutlookの「緊急」メールを自動ソートする方法

Excel VBAは、Excel作業を自動化するための強力なツールです。日常の業務で発生する単調な作業や、特定の処理を行う場合にVBAを活用することで効率を大幅に向上させることができます。今回は、特定のキーワード「緊急」をメールの件名に含むメールをトップに表示するためのVBAコードとその実装方法について詳しく解説します。

目次

Excel VBAの基本

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

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

VBAでメールをソートする方法

Excel VBAを使用して、Outlookのメールを自動的にソートする方法について説明します。この方法では、特定のキーワードを含むメールをトップに表示することができます。


Sub SortMailsByKeyword()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim olFolder As Object
    Dim olItems As Object
    Dim olMail As Object
    Dim i As Integer

    'Outlookを開く
    Set olApp = CreateObject("Outlook.Application")
    Set olNamespace = olApp.GetNamespace("MAPI")
    
    '受信トレイを指定
    Set olFolder = olNamespace.GetDefaultFolder(6) '6 = olFolderInbox
    Set olItems = olFolder.Items
    
    'メールの件名に「緊急」が含まれるメールをトップに
    olItems.Sort "[Subject]", False

    For i = olItems.Count To 1 Step -1
        Set olMail = olItems.Item(i)
        If InStr(olMail.Subject, "緊急") > 0 Then
            olMail.Move olFolder
        End If
    Next i

    'オブジェクトを解放
    Set olMail = Nothing
    Set olItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
End Sub

コードの詳細解説

上記のコードは、Outlookの受信トレイから「緊急」という文字を含むメールを検索し、それらのメールをトップに表示するためのものです。以下に各部分の詳しい解説をしていきます。

1. **Outlookとの連携**:`CreateObject(“Outlook.Application”)`を使用してOutlookを操作するためのオブジェクトを生成します。
2. **受信トレイへのアクセス**:`olNamespace.GetDefaultFolder(6)`で受信トレイを取得しています。6は受信トレイを意味する特定の番号です。
3. **メールのソート**:`olItems.Sort “[Subject]”, False`でメールを件名でソートします。ただし、この時点では「緊急」というキーワードの位置は不定です。
4. **「緊急」を含むメールを検索**:`For`ループを使用して、各メールの件名をチェックし、「緊急」というキーワードが含まれているメールをトップに移動します。

応用例

1. 特定のフォルダに「緊急」メールを移動

「緊急」というキーワードを含むメールを、受信トレイではなく、特定のフォルダに自動的に移動させることもできます。以下のコードはその例です。


Sub MoveUrgentMailsToFolder()
    '上記のコードに似ている部分は省略

    Dim olTargetFolder As Object
    Set olTargetFolder = olNamespace.GetDefaultFolder(6).Folders("緊急メール")

    For i = olItems.Count To 1 Step -1
        Set olMail = olItems.Item(i)
        If InStr(olMail.Subject, "緊急") > 0 Then
            olMail.Move olTargetFolder
        End If
    Next i
End Sub

2. 「緊急」と「重要」の2つのキーワードでソート

「緊急」というキーワードだけでなく、「重要」というキーワードも用いてメールをソートする方法です。


Sub SortMailsByTwoKeywords()
    '上記のコードに似ている部分は省略

    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 olFolder
        End If
    Next i
End Sub

3. 一定期間内の「緊急」メールだけをソート

過去7日間に受信した「緊急」というキーワードを含むメールのみを対象にする方法です。


Sub SortUrgentMailsWithinWeek()
    '上記のコードに似ている部分は省略

    Dim targetDate As Date
    targetDate = Date - 7 '7日前の日付を取得

    For i = olItems.Count To 1 Step -1
        Set olMail = olItems.Item(i)
        If olMail.ReceivedTime >= targetDate And InStr(olMail.Subject, "緊急") > 0 Then
            olMail.Move olFolder
        End If
    Next i


End Sub

まとめ

Excel VBAを活用することで、Outlookのメールのソートや移動など、多岐にわたる作業を自動化することができます。特に業務でのメールの管理や処理において、VBAの力を取り入れることで効率的な作業を実現することができるでしょう。

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

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

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

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

コメント

コメントする

目次