Appointment/Meeting Invites using VBA
In addition to handling Emails, MS Outlook application also handles calendar appointments & meeting invites.
All these items are received in your Inbox. We could identify the difference manually by seeing the icon for each item.
But to identify the difference in a VBA code, we can use one of these 2 techniques.
- TypeName
- MessageClass
Here is a VBA code that will select only the Appointment items from Inbox.
Sub FilterAppointmentMeetingInvitesVBA() 'Code from Officetricks 'Define DataType for Outlook Related Variable fields Dim objNameSpace As Outlook.NameSpace Dim objInbox As Outlook.Folder Dim ObjMailBox As Outlook.MAPIFolder Dim objMailItem 'Initialize Fields Set objNameSpace = Outlook.Application.GetNamespace("MAPI") Set ObjMailBox = objNameSpace.Folders("<MailboxName@domain.com>") 'Type your mailbox name Set objInbox = ObjMailBox.Folders("Inbox") For Each objMailItem In objInbox.Items Debug.Print objMailItem.MessageClass & " - " & objMailItem.Subject 'Method1 If TypeName(objMailItem) = "MeetingItem" Then 'Only Appoinment/Meetings are selected End If 'Method2 If objMailItem.MessageClass = "IPM.Schedule.Meeting.Request" Then 'Only Appoinment/Meetings are selected End If Next End Sub
This code will be able to differentiate between a mail item & a meeting invite.
You can use one of these methods. In some older version of Ms Outlook the appointment will not be detected as “MeetingItem” for TypeName.
In those cases you can check for MessageClass. If it is only a mailitem, then it will return IPL.Note. If it is a Meeting invite, then it will have the class IPM.Schedule.Meeting.Request.