Stopping Outlook’s “Reply All” Madness


One of the more frequent complaints I see about Outlook is its Reply All functionality. A lot of people don’t like it. Why? Because it makes it too easy for recipients to respond to everyone the original message was sent to instead of replying just to the sender. For example, a manager sends a message to everyone in her/his department asking what day they’d like to have the holiday party on. Instead of everyone replying to the sender many will hit Reply All. Suddenly you’ve got 50 messages in your inbox you don’t want or need. Reply All isn’t always bad. Sometimes it’s useful, but for the most part people misuse it. Wouldn’t it be great if there was a way to prevent that by disabling the Reply All button on messages you send? If you like that idea, then read on.

Some folks would like Microsoft to remove the functionality altogether. My guess is that won’t happen. Short of hunting the offenders down and giving them a piece of your mind, what can you do to stop the Reply All madness? Your first option comes from Microsoft Research who very thoughtfully created a free Outlook add-in called NoReplyAll that gives you control over reply all functionality on a per message basis. With this add-in installed you can disable reply all on messages you send. You can also disable the ability to forward a message, although quite frankly that’s probably not as much of an issue. The add-in does this by adding two buttons to the ribbon: one to enable/disable Reply All and the other to enable/disable Forward. The add-in only works with Outlook 2007 and 2010 and only for messages to users on an Exchange server within your organization. It won’t work with messages you send to people in other companies, unless they’re on your Exchange server, or to recipients who’s mailbox is on internet mail systems (e.g. Gmail, Hotmail). The second way to control both Reply All and Forward is through VBA (Visual Basic for Applications). A gentleman named Scott Hanselman shows how to do this in a blog post he wrote way back in 2007. The difference between the two is the add-in puts buttons on the ribbon for you while Scott’s code requires you to add a button on the QAT (quick access toolbar). Behind the scenes they do the same thing. One benefit of Scott’s approach is that you don’t have to install anything. Many IT shops don’t allow the end user to install applications, and an add-in is a type of app. Adding VBA code to Outlook is usually not controlled though. The same restrictions apply here as to the add-in (i.e. only works on Outlook 2007/2010 where the mailbox is on Exchange). I should also mention that both only work with Outlook. Neither works with OWA or mobile devices.

Not surprisingly, I like the VBA approach for a couple of reasons. First, I can tweak it so I can disable either or both functions (Reply All or Forward) on all messages without having to remember to click a button each time I send something. If you don’t like Reply All and want it disabled on every message you send, then this is your dream come true. Second, adding buttons to the interface isn’t for everyone. It requires extra steps on your part and when you get a new computer you have to remember to add the button again. The VBA approach allows me to get around this too. My solution for this is to allow you to disable either option with a switch on the subject line.

In case you aren’t familiar with the term, switch in this context means a code included in the subject that passes an option to the VBA routine. Consider the office holiday party example I used above. If the subject of the message was Office Holiday Party, then to disable Reply All I’d simply add -nra to it (i.e. Office Holiday Party -nra). If I wanted to disable the ability to forward the message, then I’d use -nfw (i.e. Office Holiday Party -nfw). To disable both I’d include both switches (i.e. Office Holiday Party -nra-nfw). The switch is your choice. I used -nfw and -nra because they’re short, easy to remember, and the minus sign reminds me that I’m removing something. You can use anything you like so long as it’s unique.

Here’s how this works. Each time you send a message Outlook triggers the ItemSend event. The code traps this event and runs some custom code. The custom code first checks to see if the item you’re sending is an email. If it is, then it looks to see if the always block forwarding setting is on or if the no forwarding switch appears in the subject line. If the answer to either question is “yes”, then forwarding is disabled and the forwarding switch is removed from the subject line. The test is then repeated for reply all. If the items being sent isn’t an email, then nothing occurs and the item goes on its way.

Adding the Code to Outlook.

Outlook 2007.

  1. Start Outlook
  2. Press ALT+F11 to open the Visual Basic Editor
  3. If not already expanded, expand Microsoft Office Outlook Objects and click on ThisOutlookSession
  4. Copy the code from the Code Snippet box and paste it into the right-hand pane of Outlook’s VB Editor window
  5. Edit the code as needed. I included comment lines wherever something needs to or can change
  6. Click the diskette icon on the toolbar to save the changes
  7. Close the VB Editor
  8. Click File and select Options
  9. When the Outlook Options dialog appears click Trust Center then click the Trust Center Settings button
  10. Click Macro Settings
  11. Select either of the two bottom settings (i.e. “Notifications for all macros” or “Enable all macros (not recommended; potentially dangerous code can run)”. The choice of which to chose is up to you. If you select “Notifications”, then you’ll be prompted at times to enable macros. If you pick “Enable all” then there’s a chance that a malicious macro could run. It’s a question of how much risk you want to assume.
  12. Click Ok until the dialog-boxes have all closed
  13. Close Outlook
  14. Start Outlook. Outlook will display a dialog-box warning that ThisOutlookSession contains macros and asking if you want to allow them to run. Say yes.

Outlook 2010.

  1. Start Outlook
  2. Click Tools > Macro > Visual Basic Editor
  3. If not already expanded, expand Microsoft Office Outlook Objects and click on ThisOutlookSession
  4. Copy the code from the Code Snippet box and paste it into the right-hand pane of Outlook’s VB Editor window
  5. Edit the code as needed. I included comment lines wherever something needs to or can change
  6. Click the diskette icon on the toolbar to save the changes
  7. Close the VB Editor
  8. Click File and select Options
  9. When the Outlook Options dialog appears click Trust Center then click the Trust Center Settings button
  10. Click Macro Settings
  11. Select either of the two bottom settings (i.e. “Notifications for all macros” or “Enable all macros (not recommended; potentially dangerous code can run)”. The choice of which to chose is up to you. If you select “Notifications”, then you’ll be prompted at times to enable macros. If you pick “Enable all” then there’s a chance that a malicious macro could run. It’s a question of how much risk you want to assume.
  12. Click Ok until the dialog-boxes have all closed
  13. Close Outlook
  14. Start Outlook. Outlook will display a dialog-box warning that ThisOutlookSession contains macros and asking if you want to allow them to run. Say yes.
'On the next two lines change the switch characters to whatever sequence you want to use. The sequence for each must be unique and is case sensitive.
Const NFW_SWITCH = "-nfw"
Const NRA_SWITCH = "-nra"

'On the next line change False to True if you want to disable Forward on every message you send
Const AlwaysBlockForward = False

'On the next line change False to True if you want to disable Reply All on every message you send
Const AlwaysBlockReplyAll = False

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    'Is the item is an email?
    If Item.Class = olMail Then
        'If the setting to always disable Forward is on or if the no forward switch is in the subject line
        If AlwaysBlockForward Or InStr(1, Item.Subject, NFW_SWITCH) Then
            'Disable the Forward button
            ActiveInspector.CurrentItem.Actions("Forward").Enabled = False
            'Remove the no forward switch from the subject line
            Item.Subject = Replace(Item.Subject, NFW_SWITCH, "")
        End If
        'If the setting to always disable Reply All is on or if the no reply all switch is in the subject line
        If AlwaysBlockReplyAll Or InStr(1, Item.Subject, NRA_SWITCH) Then
            'Disable the Reply All button
            ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = False
            'Remove the no reply all switch from the subject line
            Item.Subject = Replace(Item.Subject, NRA_SWITCH, "")
        End If
    End If
End Sub 
Advertisements

One comment on “Stopping Outlook’s “Reply All” Madness

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s