MailItemDblFilter.BAS
Public Sub MailItemDblFilter()
Dim myNamespace As Outlook.NameSpace
Dim myContacts As Outlook.Items
Dim myItems As Outlook.Items
Dim myItem As Outlook.MailItem
Dim myitems2 As Outlook.Items
Set myNamespace = Application.GetNamespace("MAPI")
Set myContacts = myNamespace.GetDefaultFolder(olFolderInbox).Items
Set myItems = myContacts.Restrict("[ReceivedTime] >= '01/16/2017' AND [ReceivedTime] < '03/18/2017'")
For Each myItem In myItems
If (myItem.Class = olmail) Then
If myItem.Subject Like "*ない*" Then
Debug.Print myItem.Subject & ": " & myItem.ReceivedTime & ":" & myItem.Sender & ":" & myItem.Recipients.Item(1).Address
End If
End If
Next
End Sub
今回のVBAは
OUTLOOK用のメールに複数の条件をかけるというプログラムです。
今回はDebug.Printでタイトルなどを抜き出していますが、msg形式で保存するようにするといいと思います。
選択したメッセージを MSG ファイルまたは RTF ファイルとして保存するマクロ
どういう時に使うか
たとえば自分をA、相手をBとして「この2か月間のやり取りだけ保存したい」という時があると思います。
そういう時にこれをMSg保存にすると自動的に保存できます。
Restrictに二重フィルタがかからない
今回苦労したのはどうやってもRestrictに二重に条件を付けることができないことでした。
そこで、日付だけぬきだし、IF文で条件をかけて絞り込むという方法で性交しました。
Restrictで抜き出すとMailItemではない
見る人が見るとわかりますが、受信フォルダのアイテムは通常MailItemになるはずなんです。
ところが、Myitem.Classにすると
If (myItem.Class = olmail) Then
でわかるようにolMailになります。
ここを別のプロパティにするとさらに三重のフィルタがかけられます。
またLikeも使えます。ワイルドカード文字は* アスタリスク
です。