非プログラマーでもできる!業務の自動化

【Excel配布】Outlookで特定のアドレスのメールの一括削除

当ページのリンクの一部に広告が含まれています。

課題・悩み「Outlookのメールを一気に削除したい」

解決策「Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ」を解説

ビジネスシーンや日常で、メールボックスの整理は重要な作業です。特に、定期的に受け取るメールマガジンや特定の送信者からのメールは、時には大量に蓄積され、メールボックスを圧迫することがあります。今回は、ExcelとVBAマクロを使って、特定の送信者からのメールをOutlook内の指定フォルダから自動的に削除する方法を紹介します。

この記事では

【Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ】を図解で解説しています。

VBAマクロファイルを配布中。

以下のボタンよりダウンロードしてください。

目次

Outlookのメール自動削除Excelの利用手順

マクロ入りExcelを用いて、Outlookのメールを一括削除する方法は以下の通りです。

Excelに情報を入力

マクロ入りExcelの各セルに必要な情報を入力します。

削除したいメールの宛先

Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ削除したいメールの宛先の画像

削除したいメールの宛先をD3かE3に入力します。

D3は宛先名と文字列、E3はアドレスを直接入力してください。

削除したいメールがあるフォルダ名

Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ削除したいメールがあるフォルダ名の画像

削除したいメールがあるフォルダ名をC3に入力します。

VBAマクロの実行

Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロVBAマクロの実行の画像

【メール一括削除】をクリックして、VBAマクロを実行すると、指定したアドレスから受信したメールがすべて削除されます。

Excelを利用してOutlookのメールを一括削除するVBAマクロ

このVBAマクロは、Microsoft Outlook内の特定のフォルダから、指定された送信者によるメールを検索し、それらを削除するためのものです。Excelシートに記載された送信者のアドレスとフォルダ名を基に、メールを検索し削除します。このプロセスは自動化されており、ユーザーは特定の条件に基づいて不要なメールを効率的に整理できます。

Sub DeleteMailsFromSpecificSenderInCustomFolder()
    Dim olApp As Object ' Outlook.Application
    Dim objNamespace As Object ' Outlook.NameSpace
    Dim objFolder As Object ' Outlook.MAPIFolder
    Dim objItem As Object
    Dim objItemsToDelete As Collection ' 削除するアイテムを格納するコレクション
    Dim strSenderEmail As String
    Dim strFolderName As String
    
    ' Excelのシート1のC2セルから削除したいメールの送信者のアドレスを設定します
    strSenderEmail = ThisWorkbook.Sheets("Sheet1").Range("C2").Value
    
    ' Excelのシート1のC3セルから検索するフォルダ名を設定します
    strFolderName = ThisWorkbook.Sheets("Sheet1").Range("C3").Value
    
    Set olApp = CreateObject("Outlook.Application")
    Set objNamespace = olApp.GetNamespace("MAPI")
    Set objFolder = FindFolder(objNamespace.Folders, strFolderName)
    Set objItemsToDelete = New Collection
    
    If Not objFolder Is Nothing Then
        For Each objItem In objFolder.Items
            If TypeOf objItem Is MailItem Then
                If objItem.SenderEmailAddress = strSenderEmail Then
                    ' 条件に一致するメールをコレクションに追加します
                    objItemsToDelete.Add objItem
                End If
            End If
        Next objItem
        
        ' コレクション内の各アイテムを削除します
        For Each objItem In objItemsToDelete
            objItem.Delete
        Next
    Else
        MsgBox "指定したフォルダが見つかりません。"
    End If
    
    Set objItem = Nothing
    Set objFolder = Nothing
    Set objNamespace = Nothing
    Set olApp = Nothing
    Set objItemsToDelete = Nothing
End Sub

MailItem.Delete メソッド (Outlook) | Microsoft Learn

処理ごとの解説

初期設定

Excelから送信者のアドレスと対象フォルダ名を読み込みます。また、OutlookアプリケーションとNamespaceオブジェクトを生成し、メール操作のための準備を行います。

strSenderEmail = ThisWorkbook.Sheets("Sheet1").Range("C2").Value
strFolderName = ThisWorkbook.Sheets("Sheet1").Range("C3").Value
Set olApp = CreateObject("Outlook.Application")
Set objNamespace = olApp.GetNamespace("MAPI")

フォルダ検索

指定されたフォルダ名に一致するフォルダをOutlookのフォルダ構成から検索します。

Set objFolder = FindFolder(objNamespace.Folders, strFolderName)

メール検索と削除

指定されたフォルダ内で、設定された送信者アドレスに一致するメールを検索し、一時コレクションに追加後、削除します。

For Each objItem In objFolder.Items
If TypeOf objItem Is MailItem Then
If objItem.SenderEmailAddress = strSenderEmail Then
objItemsToDelete.Add objItem
End If
End If
Next objItem
For Each objItem In objItemsToDelete
objItem.Delete
Next

オブジェクトの解放

使用したオブジェクトを解放し、メモリをクリアします。

Set objItem = Nothing
Set objFolder = Nothing
Set objNamespace = Nothing
Set olApp = Nothing
Set objItemsToDelete = Nothing

注意点

処理時間

データ量が多い場合(例えば、数千件のメールを処理する場合)、このマクロの実行には相応の時間がかかる可能性があります。

処理時間は、対象となるメールの数やOutlookのパフォーマンスに依存します。

操作の取り消し

VBAマクロで削除したメールは、”削除済みアイテム” フォルダに移動される場合がありますが、直接完全に削除される場合もあります。

したがって、実行前には重要なメールが誤って削除されないように注意が必要です。

一度削除されたメールは元に戻せない可能性があるため、特に重要なメールには注意してください。

必要な環境設定

参照設定

このマクロを実行するためには、VBAエディタで”Microsoft Outlook 15.0 Object Library”(または使用しているOutlookのバージョンに応じたライブラリ)への参照設定を追加する必要があります。

これにより、コード内でOutlookのオブジェクトとメソッドにアクセスできるようになります。

マクロの設定

ExcelおよびOutlookのセキュリティ設定によっては、マクロの実行が制限される場合があります。

セキュリティ警告が表示された場合は、信頼できるマクロとして設定することで実行できるようになります。

コードのカスタマイズ箇所

このマクロをご自身の環境で使用する際に変更する必要がある部分は、主にメールの送信者アドレスと検索対象のフォルダ名です。これらは、特定のメールを削除する条件と対象フォルダを指定するために必要です。また、Excelのシート名やセル参照が異なる場合は、それらの情報も適宜更新する必要があります。

以下に、変更が必要な箇所の概要とその解説、および該当するコードの一部を表にまとめました。

送信者アドレス

メールの送信者アドレスを指定します。このアドレスに一致するメールが削除対象となります。ご自身が削除したいメールの送信者アドレスにこの値を変更してください。

strSenderEmail = ThisWorkbook.Sheets("Sheet1").Range("C2").Value

フォルダ名

削除対象のメールを検索するフォルダ名を指定します。ご自身がメールを検索したいOutlook内のフォルダ名にこの値を変更してください。

strFolderName = ThisWorkbook.Sheets("Sheet1").Range("C3").Value

Excelのシート名

メールの送信者アドレスとフォルダ名が記載されているExcelのシート名です。デフォルトでは”Sheet1″になっていますが、使用しているExcelファイルのシート名に合わせて変更する必要があります。

ThisWorkbook.Sheets("Sheet1")

変更が必要な理由と詳細:

送信者アドレスとフォルダ名

これらは、削除したいメールの条件を特定するために重要です。

送信者アドレスは、特定の人物または組織からのメールを対象とするために使用します。

フォルダ名は、メールが格納されている場所を指定するために使用します。

これらの値を適切に設定することで、目的のメールのみが選択され、削除されます。

Excelのシート名

このマクロはExcelのシートから送信者アドレスとフォルダ名を読み取ります。

使用しているExcelファイルのシート名が”Sheet1″でない場合、コード内のシート名を実際のものに変更する必要があります。

まとめ:

このように、マクロを自分の環境に合わせてカスタマイズすることで、特定の条件に基づいて不要なメールを効果的に削除することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次