Excel VBAで「管理通知」メールを専用フォルダへ自動移動する方法

この記事では、Excel VBAを使用して、管理者からの通知メールを「管理通知」フォルダに自動で移動する方法について詳しく解説します。VBAの基本的な知識を前提に、具体的なコード、その詳細な解説、さらなる応用例を提供します。

目次

Excel VBAの基本

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

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

VBAでOutlookメールの管理を自動化する

OutlookのVBAを使用することで、受信したメールの自動分類や処理を行うことができます。今回は、特定の通知メールを「管理通知」のフォルダに移動するスクリプトを紹介します。

基本のコード

以下は、管理者からの通知メールを「管理通知」フォルダへ移動するVBAコードです。


Sub MoveAdminMailsToFolder()
    Dim objOutlook As Object
    Dim objNamespace As Object
    Dim objInbox As Object
    Dim objMail As Object
    Dim objItems As Object
    Dim objTargetFolder As Object
    
    ' Outlook オブジェクトの設定
    Set objOutlook = CreateObject("Outlook.Application")
    Set objNamespace = objOutlook.GetNamespace("MAPI")
    
    ' 受信トレイとターゲットフォルダの設定
    Set objInbox = objNamespace.GetDefaultFolder(6) ' 6 = olFolderInbox
    Set objTargetFolder = objInbox.Folders("管理通知")
    Set objItems = objInbox.Items
    
    ' メールをループして処理
    For Each objMail In objItems
        If objMail.SenderName = "管理者" Then
            objMail.Move objTargetFolder
        End If
    Next objMail
End Sub

コードの解説

このスクリプトは、Outlookの受信トレイをチェックし、送信者が「管理者」として指定されているメールを「管理通知」フォルダに移動します。

– **objOutlook, objNamespace:** Outlookアプリケーションとその名前空間を参照します。
– **objInbox, objItems:** 受信トレイとその中のメールアイテムを参照します。
– **objTargetFolder:** 移動先の「管理通知」フォルダを参照します。
– **For Eachループ:** すべてのメールをループし、条件に一致するものをターゲットフォルダに移動します。

応用例1:複数の条件でフィルタリング

送信者だけでなく、メールの件名も条件として加えてフィルタリングする方法。


For Each objMail In objItems
    If objMail.SenderName = "管理者" And objMail.Subject Like "*通知*" Then
        objMail.Move objTargetFolder
    End If
Next objMail

応用例2:日付でのフィルタリング

特定の日付以降のメールだけをターゲットにする方法。


For Each objMail In objItems
    If objMail.SenderName = "管理者" And objMail.ReceivedTime > "2023/09/01" Then
        objMail.Move objTargetFolder
    End If
Next objMail

応用例3:特定の文字列を本文に含むメールの処理

メールの本文に特定のキーワードが含まれている場合のみ、処理を行う方法。


For Each objMail In objItems
    If objMail.SenderName = "管理者" And InStr(1, objMail.Body, "重要") > 0 Then
        objMail.Move objTargetFolder
    End If
Next objMail

まとめ

OutlookのVBAを活用することで、日常的なメール処理を効率的に自動化することが可能です。上記の基本的なスクリプトをベースに、さまざまな応用例を試して、自分のニーズに合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次