2014/01/20

【Outlook】メールを一括削除したい



こんにちは!メールが溜まりまくってるtknriaです!


仕事やプライベートに限らず、毎日膨大な量のメールを処理する時代になりましたが、どんどん溜まっていきますよね。

受信メールは全部見た上で、削除したり仕分けしたりしていますけど、送信済みボックスや削除済みボックスの中は溜まりまくり。


削除しようとしても、膨大すぎて選別するのが大変ですよね。


そこで、条件に合致する不要なメールを、一括で完全削除してしまう機能を実装します。


私は、メーラーはOutlook(読み:アウトルック)を愛用しているので、VBAを用いた方法をご紹介します。


メールを気持ちよく一括削除!


ここでは簡易的に、件名に「ウイルス」という文字が含まれていたら削除する、という条件にしています。


'----- 以下、ソース -----


Public Sub DeleteMails()
    ' 受信トレイ内のメールを削除
    Call DeleteItems(Session.GetDefaultFolder(olFolderInbox))
       
    ' 送信済みアイテム内のメールを削除
    Call DeleteItems(Session.GetDefaultFolder(olFolderSentMail))
       
    ' 削除済みアイテム内のメールを削除
    Call DeleteItems(Session.GetDefaultFolder(olFolderDeletedItems))
       
    MsgBox ("削除完了")
End Sub


Public Sub DeleteItems(objMailBox As Folder)
    Dim i As Integer
   
    For i = objMailBox.Items.Count To 1 Step -1
        With objMailBox.Items(i)
                If InStr(.Subject, "ウイルス") > 0 Then
                    .Delete      ' 問答無用で削除するので注意
                Else
                End If
        End With
    Next i
End Sub


'----- 以上、ソース -----



条件のところはカスタマイズしてください。

ソース中にも注意書きしていますが、本当に問答無用で削除されるので、デバッグのときには気をつけてください。


対象のフォルダも指定でき、
Call DeleteItems(Session.GetDefaultFolder(olFolderDeletedItems))
の、
olFolderDeletedItems
の部分をいろいろ変更することで、設定できます。

「受信トレイ」、「送信済みアイテム」、「削除済みアイテム」については上記ソースの通りです。



キレイにしていく順番が大事!


「削除済みアイテム」内の処理を最後にするのがポイントで、上記ソースでは、

・「受信トレイ」から「削除済みアイテム」に移動
  ↓
・「送信済みアイテム」から「削除済みアイテム」に移動
  ↓
・「削除済みアイテム」から完全削除

という処理になります。


ここで、「送信済みアイテム」と「削除済みアイテム」の順番を入れ替えると、

・「受信トレイ」から「削除済みアイテム」に移動
  ↓
・「削除済みアイテム」から完全削除
  ↓
・「送信済みアイテム」から「削除済みアイテム」に移動

という処理になり、「送信済みアイテム」内にあった不要アイテムが「削除済みアイテム」に残されたままになるので注意ですね。


掃除は上から!と同じですね。



億劫なあとがき


全てのメールチェックをするのは当然として、その仕分けも膨大な量になりますよね。

閲覧や分別はこまめにしたほうが良いですけど、削除はこの機能はまとめてすっきりしちゃいましょう!