Sending a Message to Meeting Attendees Who Accepted


Recently I signed up for an account at Quora. One of the first Outlook questions I encountered was this one from Thomas Foote. Thomas is looking for a way to send a message to just those meeting invitees that accepted the meeting request. I explained to Thomas that while Outlook does not have a built in means of doing this, it is possible to do it with a script (macro).

This macro is very simple. It creates a new message then opens the selected meeting/appointment and loops through the list of invitees. If an invitee is a person, not a resource, and if they accepted, then they are added to the To line of the message. The message is then displayed on screen.

Instructions.

Thomas has Outlook 2010, which I still haven’t loaded yet. I am therefore unable to provide him with a complete set of instructions for adding the code. The best I can do is provide instructions for Outlook 2007 and hope that he can adapt them to Outlook 2010 without too much trouble.

  1. Start Outlook
  2. Click Tools > Macro > Visual Basic Editor
  3. If not already expanded, expand Microsoft Office Outlook Objects
  4. If not already expanded, expand Modules
  5. Select an existing module (e.g. Module1) by double-clicking on it or create a new module by right-clicking Modules and selecting Insert > Module.
  6. Copy the code from the Code Snippet box and paste it into the right-hand pane of Outlook’s VB Editor window
  7. Edit the code as needed. I included comments wherever something needs to or can change
  8. Click the diskette icon on the toolbar to save the changes
  9. Close the VB Editor
  10. Sub SendToAccepted()
        Dim olkApt As Object, olkMsg As Outlook.MailItem, olkRcp As Outlook.Recipient
        On Error Resume Next
        Select Case TypeName(Application.ActiveWindow)
            Case "Explorer"
                Set olkApt = Application.ActiveExplorer.Selection(1)
            Case "Inspector"
                Set olkApt = Application.ActiveInspector.CurrentItem
        End Select
        If TypeName(olkApt) <> "AppointmentItem" Then
            msgbox "The item you selected is not a meeting/appointment.  Processing terminated.", vbCritical + vbOKOnly, "Send to Meeting Attendees"
        Else
            Set olkMsg = Application.CreateItem(olMailItem)
            With olkMsg
                .Subject = olkApt.Subject
                For Each olkRcp In olkApt.Recipients
                    If olkRcp.MeetingResponseStatus = olResponseAccepted Then
                        If olkRcp.Type <> olResource Then
                            olkMsg.Recipients.Add olkRcp.Address
                        End If
                    End If
                Next
            End With
            olkMsg.Display
        End If
        Set olkApt = Nothing
        Set olkMsg = Nothing
        Set olkRcp = Nothing
    End Sub
    

15 comments on “Sending a Message to Meeting Attendees Who Accepted

  1. AWESOME! It worked for all my needs! I created separate ones for declined and none! I’ve been wanting to do this forever! 🙂

  2. This is exactly what I have needed for some time! I changed the code to use the Name instead of address since the Email item will resolve names. Otherwise the existing code worked perfect for me. I created a macro for each of the possible responses, including no response. Thank you!

    • Yes, it is. In fact it’s a very simple change. All you need do is change olResponseAccepted to olResponseNone on line 17 of the code. Now instead of picking out those recipients that have responded the script will pick out those that have not responded. I recommend changing the name of the subroutine too, e.g. SendToNotReplied, but that’s not a requirement just a suggestion.

  3. Pingback: Metrics Marketing Group to Offer Usability Evaluations at Annual Online Marketing Summit 2011 | Green Living Tips | Information and Free Resources |

Leave a comment