Outlookメール削除
課題・悩み「Outlookのメールを一気に削除したい」
解決策「Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ」を解説
ビジネスシーンや日常で、メールボックスの整理は重要な作業です。特に、定期的に受け取るメールマガジンや特定の送信者からのメールは、時には大量に蓄積され、メールボックスを圧迫することがあります。今回は、ExcelとVBAマクロを使って、特定の送信者からのメールをOutlook内の指定フォルダから自動的に削除する方法を紹介します。
【Outlookで特定のアドレスから受信したメールを一括削除するVBAマクロ】を図解で解説しています。
VBAマクロファイルを配布中。
以下のボタンよりダウンロードしてください。
Outlookのメール自動削除Excelの利用手順
マクロ入りExcelを用いて、Outlookのメールを一括削除する方法は以下の通りです。
Excelに情報を入力
マクロ入りExcelの各セルに必要な情報を入力します。
削除したいメールの宛先
削除したいメールの宛先をD3かE3に入力します。
D3は宛先名と文字列、E3はアドレスを直接入力してください。
削除したいメールがあるフォルダ名
削除したいメールがあるフォルダ名をC3に入力します。
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″でない場合、コード内のシート名を実際のものに変更する必要があります。
まとめ
このように、マクロを自分の環境に合わせてカスタマイズすることで、特定の条件に基づいて不要なメールを効果的に削除することができます。
Microsoft365の作業を自動化・効率化する便利なVBAマクロのコードの一覧です。
コピペでOK!Word VBAのコード一覧
Wordの作業を自動化・効率化する便利なVBAマクロの一覧です。
コメント