Monday, April 29, 2019

email - Using ReceivedTime in Outlook VBA to count yesterday's mail



I want to flash up a message box with the amount of mail received yesterday.



The code I have at the moment is:




Public Sub YesterdayCount()

Set ns = Application.GetNamespace("MAPI")
Set outApp = CreateObject("Outlook.Application")
Set outNS = outApp.GetNamespace("MAPI")

Dim Items As Outlook.Items
Dim MailItem As Object


Dim yestcount As Integer
yestcount = 0

Set Folder = outNS.Folders("Correspondence Debt Advisor Queries").Folders("Inbox")
Set Items = Folder.Items

For Each Item In Items
If MailItem.ReceivedTime = (Date - 1) Then
yestcount = yestcount + 1
End If

Next

MsgBox yestcount

End Sub


The problem is with the line:



If MailItem.ReceivedTime = (Date - 1) Then



The error says that an object variable is not set, but I can't fathom this after researching.


Answer



You almost got it. You basically never set the MailItem nor qualified it to the Item, and since ReceivedTime is Date / Time format, it will never equal a straight Date.



See the code below. I added some features to sort by ReceivedTime, then Exit the loop once it passes yesterday's date. I also cleaned up some of the variable naming so it will not be confused with inherent Outlook Object naming conventions.



Public Sub YesterdayCount()


Dim outNS As Outlook.NameSpace
Set outNS = Application.GetNamespace("MAPI")

Dim olFolder As Outlook.Folder
Set olFolder = outNS.Folders("Correspondence Debt Advisor Queries").Folders("Inbox")

Dim olItems As Outlook.Items
Set olItems = olFolder.Items

olItems.Sort "[ReceivedTime]", True


Dim yestcount As Integer
yestcount = 0

Dim item As Object

For Each item In olItems

'commented code works for MailItems
'Dim olMail As Outlook.MailItem

'Set olMail = item

Dim dRT As Date
'dRT = olMail.ReceivedTime
dRT = item.ReceivedTime

If dRT < Date And dRT > Date - 2 Then
If dRT < Date - 1 Then Exit For
yestcount = yestcount + 1
End If



Next

MsgBox yestcount

End Sub

No comments:

Post a Comment

plot explanation - Why did Peaches&#39; mom hang on the tree? - Movies &amp; TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...