Excel VBAを使ったOutlookのメディアメール自動移動方法

この記事では、Excel VBAを使用して、画像や動画を含むメールを「メディア」フォルダに移動する処理について詳しく説明します。具体的なコード例、その詳細な解説、そして応用例を含めて詳しく解説していきます。

目次

Excel VBAの基本

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

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

VBAとは

VBA(Visual Basic for Applications)は、Microsoft Officeの各アプリケーション(Excel、Word、Outlookなど)を自動化するためのプログラミング言語です。今回は、OutlookのVBAを用いて特定の条件に合致するメールを別フォルダに移動させる処理を実装します。

基本的なコード

以下のコードは、受信トレイにある画像や動画を含むメールを「メディア」フォルダに移動させる基本的なVBAコードです。


Sub MoveMediaMails()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim olFolder 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

    ' 受信トレイのメールをチェック
    For i = olFolder.Items.Count To 1 Step -1
        Set olMail = olFolder.Items(i)
        If olMail.Attachments.Count > 0 Then
            ' 添付ファイルの拡張子をチェック
            For Each att In olMail.Attachments
                If att.FileName Like "*.jpg" Or att.FileName Like "*.png" Or att.FileName Like "*.mp4" Then
                    olMail.Move olNamespace.GetDefaultFolder(6).Folders("メディア")
                    Exit For
                End If
            Next att
        End If
    Next i

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

コードの詳細解説

上記のコードについて、各部分の詳しい説明を行います。

– **オブジェクトの設定**:Outlookのオブジェクトを初期化し、受信トレイ(`olFolderInbox`)のオブジェクトを取得しています。
– **メールのチェック**:受信トレイにあるすべてのメールをループ処理で確認します。
– **添付ファイルの存在チェック**:メールに添付ファイルが存在する場合、その添付ファイルが画像(`.jpg`, `.png`)または動画(`.mp4`)かどうかをチェックします。
– **メールの移動**:条件に合致するメールを「メディア」フォルダに移動します。

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

特定の送信者からのメールだけを「メディア」フォルダに移動する場合のコード例とその説明です。


If olMail.SenderEmailAddress = "example@example.com" Then
    ' その他の処理...
End If

上記のコードは、メールの送信者のアドレスが”example@example.com”である場合のみ、その他の条件をチェックし処理を進めることを意味しています。

応用例2: メールの件名でのフィルタリング

メールの件名に特定のキーワードが含まれる場合にのみ「メディア」フォルダに移動させる場合のコード例とその説明です。


If InStr(1, olMail.Subject, "キーワード") > 0 Then
    ' その他の処理...
End If

InStr関数を使用して、メールの件名に”キーワード”が含まれている場合のみ処理を進めます。

応用例3: 最新のメールのみを移動

最も新しいメールだけを「メディア」フォルダに移動する場合のコード例とその説明です。


If i = olFolder.Items.Count Then
    ' その他の処理...
End If

このコードは、最も新しいメールだけを対象として処理を実行します。

まとめ

OutlookのVBAを使用して、特定の条件に合致するメールを「メディア」フォルダに移動する方法について詳しく解説しました。基本的なコードとその解説、さらには応用例として、特定の送信者からのメールの移動、メールの件名でのフィルタリング、最新のメールのみの移動などの方法を提供しました。これらの知識を基に、自分のニーズに合わせたカスタマイズを進めることができます。

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

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

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

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

コメント

コメントする

目次