An Outlook Calendar owner wanted to know how to notify a delegate that a new appointment was scheduled when adding an appointment to the calendar. Solution: VBA that watches for a new appointment item and sends an email to a predetermined email address.
To avoid sending email for personal appointments, the VBA looks for a category named "private" and only sends an email if that category is NOT assigned to the appointment. You could use a subject filter to check for the word Private as the first word in the subject instead:
If Item.Class = olAppointment And _ Left(Item.Subject, 8) <> "Private:" Then
With a little tweaking, the delegate could generate the email to the boss when she adds a new appointment to the boss's calendar.
Send an Email when a New Appointment is added to Calendar
Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim Ns As Outlook.NameSpace Set Ns = Application.GetNamespace("MAPI") Set Items = Ns.GetDefaultFolder(olFolderCalendar).Items End Sub Private Sub Items_ItemAdd(ByVal Item As Object) On Error Resume Next If Item.Class = olAppointment And _ Item.Category <> "private" Then Dim objMsg As MailItem Set objMsg = Application.CreateItem(olMailItem) objMsg.To = "firstname.lastname@example.org" objMsg.Subject = Item.Subject objMsg.Body = "New appointment added to " & Item.Organizer & "'s calendar." & _ vbCrLf & "Subject: " & Item.Subject & " Location: " & Item.Location & _ vbCrLf & "Date and time: " & Item.Start & " Until: " & Item.End 'use Display instead of Send if you want to add a note before sending objMsg.Send Set objMsg = Nothing End If End Sub
Watching for new items in a non-default calendars
If the calendar is not your default calendar, you need to use the Function for non-default folders at Working with VBA and non-default Outlook Folders.
After adding the GetFolderPath function to the module, change
Set Items = Ns.GetDefaultFolder(olFolderCalendar).Items
Set Items = GetFolderPath("other-datafile-display-name\Calendar").Items
Don't forget to change the display name to the name that is used in the folder list.