I tried
'only works for name, not email address.
"@SQL=""urn:schemas:httpmail:displayto"" ci_phrasematch '%John Doe%'"
'works great, failed when use AND. today was declared as string
"@SQL=""urn:schemas:httpmail:subject"" like '%" & emailSubject & "%'"
'works great, failed when use AND. today was declared as string
"[ReceivedTime] <= today"
How can I use Item.Restrict
to filter the recipient email address, subject and date range together?
Here is example for multiple filters
Option Explicit
Public Sub Example()
Dim olNs As Outlook.NameSpace
Dim TargetFolder As Outlook.MAPIFolder
Dim Items As Outlook.Items
Dim Item As Object
Dim i As Long
Dim Filter As String
Set olNs = Application.Session
If TargetFolder Is Nothing Then Set TargetFolder = ActiveExplorer.CurrentFolder
Debug.Print TargetFolder.Name
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " >= '01/10/2018' And " & _
Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " < '01/16/2018' And " & _
Chr(34) & "urn:schemas:httpmail:fromname" & _
Chr(34) & "Like '%0m3r 0m3r%'"
Set Items = TargetFolder.Items.Restrict(Filter)
Items.Sort "[ReceivedTime]"
For i = Items.Count To 1 Step -1
DoEvents
If TypeOf Items(i) Is mailitem Then
Set Item = Items(i)
Debug.Print Item.Subject
Debug.Print Item.ReceivedTime
End If
Next
End Sub
If TargetFolder Is Nothing Then Set TargetFolder = ActiveExplorer.CurrentFolder
Returns or sets a MAPIFolder object that represents the current folder displayed in the explorer
Or use
Dim olNs As Outlook.NameSpace
Dim TargetFolder As Outlook.MAPIFolder
Set olNs = Application.GetNamespace("MAPI")
Set TargetFolder = olNs.GetDefaultFolder(olFolderInbox)
Filter with Subject line
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " >= '01/10/2018' And " & _
Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " < '01/17/2018' And " & _
Chr(34) & "urn:schemas:httpmail:fromname" & _
Chr(34) & "Like '%0m3r 0m3r%' And " & _
Chr(34) & "urn:schemas:httpmail:subject" & _
Chr(34) & " Like '%Bla Bla%'"