Enhancing Outlook 2007 Meeting Reminders

AID: 2965
  • Status: Published

10300 points

  • ByBlueDevilFan
  • TypeTips/Tricks
  • Posted on2010-04-25 at 15:23:47
Awards
  • Community Pick
  • Experts Exchange Approved
Issue.  I’m something of a stickler for keeping appointments.  I make it a point to arrive at meetings on time.  I think it’s rude and unprofessional to arrive late or, worse, not show up at all. Following the advice of "Getting Things Done" author David Allen I created a trusted system for managing all the details of my life.  I settled on using Outlook.  When I make an appointment or schedule a meeting I put it on my calendar immediately.  I’ve configured Outlook to remind me of all appointments/meetings 15 minutes before they start.  That reminder helps ensure that I get to the meeting on time.  Unfortunately some of my colleagues aren’t as diligent.  I find it frustrating when a meeting begins and some of the principal players aren’t there.  It’s even worse if the meeting is with a customer and we have to spend time hunting for some of the participants from our side.  That’s bad business.  When asked why they were late getting to the meeting the responses are typically along the lines of "I missed the reminder", "I forgot to set a reminder", "I saw the reminder, but was busy and forgot", etc.  Wouldn’t it be nice if Outlook could automatically send a message to all meeting participants reminding them of the meeting?  While this wouldn’t ensure that everyone arrives on time it would help combat the problem by jogging their memory with an email.

Background.  Outlook, at least through 2007, displays an onscreen reminder if one is set for the given appointment/meeting.  Each user can customize the default reminder time which means that reminders can be disabled entirely if a user chooses to do so.  Meeting participants may or may not have a smartphone that syncs with their Outlook calendar.  Those that do may see a reminder on the phone.

Solution.  Each time Outlook displays a reminder it triggers an event that we can use to run a VBA (Visual Basic for Applications) procedure.  The code in the procedure can then create and send an email to the meeting participants reminding them of the meeting.

Requirements.  
a.      Full version of Outlook.  This solution only works with the full version of Outlook.  It is not compatible with Outlook Web Access (OWA) or Outlook Express.
b.      Outlook 2007.  The code will work in earlier versions of Outlook too, but they include security constraints that prevent a script from sending a message without the use of third-party tools.  If anyone who reads this article is interested in implementing this on a computer using Outlook 2003 or earlier, then they can contact me for details on what is needed.  
c.      You must be the meeting organizer for this solution to work.  This constraint prevents creating a storm of reminder messages if the solution is implemented on multiple computers.  Otherwise each computer that runs this solution would send a reminder message for any appointment configured for reminders.  More about this below.
d.      Outlook must be running for this solution to work.

Instructions.
1

Add the Code to Outlook


a.      Start Outlook
b.      Click Tools > Macro > Visual Basic Editor.
c.      If not already expanded, expand Microsoft Office Outlook Objects and click on ThisOutlookSession.
d.      Copy the code below and paste it into the right-hand pane of Outlook's VB Editor window.
e.      Edit the code as needed.  I included comment lines wherever something needs to or can change.
f.      Click the diskette icon on the toolbar to save the changes.
g.      Close the VB Editor
h.      Click Tools > Trust Center.
i.      Click Macro Security.
j.      Set "Macro Security" to Warnings for all macros.
k.      Click OK.
l.      Close Outlook.
m.      Start Outlook.  Outlook will display a dialog-box warning that ThisOutlookSession contains macros and asking if you want to allow them to run.  Click Yes.

Dim WithEvents olkReminders As Outlook.Reminders

Private Sub Application_Quit()
    Set olkReminders = Nothing
End Sub

Private Sub Application_Startup()
    Set olkReminders = Application.Reminders
End Sub

Private Sub olkReminders_ReminderFire(ByVal ReminderObject As Reminder)
    'On the next line edit the triggering category name as desired.'
    Const REMINDER_CATEGORY_NAME = "Reminders"
    Dim olkApt As Outlook.AppointmentItem, _
        olkMsg As Outlook.MailItem, _
        olkRcp As Outlook.Recipient
    If ReminderObject.Item.Class = olAppointment Then
        Set olkApt = ReminderObject.Item
        If olkApt.MeetingStatus = olMeeting Then
            If InStr(1, olkApt.Categories, REMINDER_CATEGORY_NAME) Then
                If olkApt.Organizer = Session.CurrentUser Then
                    Set olkMsg = Application.CreateItem(olMailItem)
                    With olkMsg
                        For Each olkRcp In olkApt.Recipients
                            Select Case olkRcp.Type
                                'On the next line remove olOptional if you only want reminders sent to required attendees.'
                                Case olRequired, olOptional
                                    .Recipients.Add olkRcp.Address
                            End Select
                        Next
                        'On the next line edit the message subject as desired.'
                        .Subject = "Meeting Reminder"
                        .BodyFormat = olFormatPlain
                        'On the next 5 lines edit the message body as desired.'
                        .Body = "This is a reminder of the following meeting:" & vbCrLf _
                              & "Subject.: " & olkApt.Subject & vbCrLf _
                              & "Starts..: " & olkApt.Start & "(" & olkApt.StartTimeZone & ")" & vbCrLf _
                              & "Ends....: " & olkApt.End & "(" & olkApt.StartTimeZone & ")" & vbCrLf _
                              & "Location: " & olkApt.Location
                        .Send
                    End With
                End If
            End If
        End If
    End If
    Set olkApt = Nothing
    Set olkMsg = Nothing
    Set olkRcp = Nothing
End Sub
                                    
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:

Select allOpen in new window



2

Using Enhanced Meeting Reminders


a.      Create a meeting in Outlook just as you normally would.
b.      Add a category of "Reminders" (or whatever category name you set on line 13 of the code) to the meeting.



How This Works.  Here's how the solution works.
a.      A reminder is triggered by an Outlook item (e.g. appointment, task, etc.) raising the ReminderFire event.
b.      The event is trapped, running the code in the procedure olkReminders_ReminderFire and passing it the item that triggered the reminder.
c.      The code tests to see if the event was triggered by an appointment.  If it wasn’t, then processing is halted.  This constraint prevents a message from being sent for any item that triggers a reminder.
d.      The code tests to see if the appointment is a meeting (i.e. involves others).  If it isn’t, then processing is halted.  This constraint prevents reminder messages being sent for appointments (i.e. items that only involve you).
e.      The code tests to see if the meeting’s categories includes the defined keyword.  If it doesn’t, then processing is halted.  This allows you to control which meetings reminders are sent for.  Without this constraint a reminder would be sent for every meeting.
f.      The code test to see if you are the meeting organizer.  If you aren’t, then processing is halted.  This constraint prevents the message storm I described in item "c" of Requirements.
g.      The code creates and sends an email addressed to all meeting attendees, or optionally to just the required attendees, reminding them of the meeting.

Notes.  One note of caution.  The solution will send a message each time a configured item’s reminder fires.  When a reminder fires if you select the option to sleep the reminder for a set number of minutes, then a second message will be sent when the reminder fires again.  Be careful not to overwhelm attendees with too many reminder messages.

Links to Other BlueDevilFan Articles

1. Creating Linked Notes in Outlook 2007
2. Extending Outlook Rules via Scripting
3. Importing and Exporting Outlook 2007 Categories
4. Outlook 2007 Corporate Categories System
5. Automatically Printing/Saving Emails/Attachments in Outlook
6. Avoiding Blank Subject Lines in Outlook
7. Never Again Forget to Add that Attachment to your Outlook Email
Asked On
2010-04-25 at 15:23:47ID2965
Tags

outlook

,

script

,

macro

,

reminders

Topic

Outlook Groupware Software

Views
4142

Comments

Expert Comment

by: younghv on 2010-04-27 at 07:33:12ID: 13877

BlueDevilFan -
Another in your great list of 'usable' Articles.
You should imbed hyper-links between all of these 'how-to' Articles you're doing.

"Yes" vote above.

Author Comment

by: BlueDevilFan on 2010-04-27 at 07:38:09ID: 13878

Thanks, Vic.

That's a good idea.  I think I'll do that.

Add your Comment

Please Sign up or Log in to comment on this article.

Join Experts Exchange Today

Gain Access to all our Tech Resources

Get personalized answers

Ask unlimited questions

Access Proven Solutions

Search 3.2 million solutions

Read In-Depth How-To Guides

1000+ articles, demos, & tips

Watch Step by Step Tutorials

Learn direct from top tech pros

And Much More!

Your complete tech resource

See Plans and Pricing

30-day free trial. Register in 60 seconds.

Loading Advertisement...

Top Outlook Experts

  1. apache09

    663,644

    Sage

    2,168 points yesterday

    Profile
    Rank: Genius
  2. alanhardisty

    170,946

    Guru

    0 points yesterday

    Profile
    Rank: Genius
  3. demazter

    131,854

    Master

    0 points yesterday

    Profile
    Rank: Genius
  4. chris_bottomley

    109,375

    Master

    2,800 points yesterday

    Profile
    Rank: Genius
  5. thinkpads_user

    95,624

    Master

    750 points yesterday

    Profile
    Rank: Genius
  6. Rajkumar-MCITP

    89,780

    Master

    0 points yesterday

    Profile
    Rank: Guru
  7. l33tf0b

    83,091

    Master

    0 points yesterday

    Profile
    Rank: Wizard
  8. BlueDevilFan

    73,191

    Master

    50 points yesterday

    Profile
    Rank: Savant
  9. jjmck

    66,336

    Master

    0 points yesterday

    Profile
    Rank: Genius
  10. Neilsr

    61,466

    Master

    0 points yesterday

    Profile
    Rank: Genius
  11. amitkulshrestha

    61,377

    Master

    0 points yesterday

    Profile
    Rank: Genius
  12. jcimarron

    49,232

    0 points yesterday

    Profile
    Rank: Genius
  13. ve3ofa

    46,002

    0 points yesterday

    Profile
    Rank: Genius
  14. dlmille

    45,200

    0 points yesterday

    Profile
    Rank: Genius
  15. akicute555

    44,979

    10 points yesterday

    Profile
    Rank: Wizard
  16. Anuroopsundd

    44,529

    0 points yesterday

    Profile
    Rank: Sage
  17. HendrikWiese

    40,896

    2,000 points yesterday

    Profile
    Rank: Sage
  18. Exchange_Geek

    37,449

    0 points yesterday

    Profile
    Rank: Sage
  19. jordannet

    36,757

    0 points yesterday

    Profile
    Rank: Wizard
  20. acbrown2010

    34,652

    0 points yesterday

    Profile
    Rank: Genius
  21. diverseit

    34,600

    0 points yesterday

    Profile
    Rank: Guru
  22. WORKS2011

    32,775

    0 points yesterday

    Profile
    Rank: Guru
  23. e_aravind

    31,941

    0 points yesterday

    Profile
    Rank: Genius
  24. JBlond

    31,700

    0 points yesterday

    Profile
    Rank: Sage
  25. limjianan

    30,910

    0 points yesterday

    Profile
    Rank: Genius

Hall Of Fame