Scott Hanselman

How to easily disable Reply To All and Forward in Outlook

October 24, 2007 Comment on this post [40] Posted in Musings | Programming | Tools
Sponsored By

2010 UPDATE: This is cool and interesting to read, but you should just go get this Free Outlook 2007/2010 No Reply All AddIn to do this work for you.

UPDATE: To be clear. This technique does NOT send macros in your email. It only flips a metadata bit in the message and that metadata is only transmitted within Exchange (within your company). It is not propagated to outside email addresses. It's better than BCC because it doesn't break local Outlook Rules. It's harmless.

I really hate it when I say "please send replies directly to me" and a Reply To All happens. It's not only a bummer for the person who sent it but also for everyone on the distribution list.

Trivia: At Microsoft they/we say "little-r" me when we want a reply directly to us or "Big-R" when we mean Reply To All.

I was thinking it'd be cool to have a button on my Outlook Message Form that prevented folks from Reply'ing to All or Forwarding the message. I poked around a bit trying to write an Outlook Macro and realized that I've completely overwritten all the brain cells that had previously held information about VBA macro programming. Seriously. I worked in VB3-6 for years. I was a ninja. Now I'm just an old fat guy with a Black Belt that used to fit. Anyway.

I asked for help and KC Lemson pointed me to Bill Jacob, both actual ninjas, and he took my Rube Goldberg-ian plan and turned it into two lines of code. Doh.

Here's "How to easily disable Reply To All and Forward in Outlook":

Go Tools|Macro|Macros...


In the next dialog, type something like NoReplyAll and click Create.


At this point, even when running Vista 64, you'll be magically transported back to 1996, completely with owner-draw non-standard gray toolbars and other bits of gray that will leak in from the past.

Add these lines to your new subroutine:

ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = False
ActiveInspector.CurrentItem.Actions("Forward").Enabled = False

Then close this window.


At this point you've got a macro that prevents Replying to All and Forwarding (at least within Outlook world. This won't prevent folks running other mail systems from Replying to All, but we're mostly focused on internal work with this tip.)

Now, open up a new Outlook Message and right click at the VERY top (assuming Outlook 2007).


Click More from this dialog select "Macros" from the dropdown, select your new Macro and click Add>>.


If you like, click on your Macro on the right and select the Modify button and pick a nice icon for it and a Display Name. I used a "halting hand" icon:


Click OK and look at your Quick Access've got a nice little icon there.


Now, CLICK that button then send an email to yourself or a coworker...


Cool, mission accomplished. One less thing to worry about. Thanks Bill!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
October 24, 2007 21:29
That is a great trick. I would assume at least a large percent of the people who receive my email use Outlook. Out of curiosity, are there many people at Microsoft who do not use Outlook? I do know plenty of people who would rather use Mutt in Unix than use Outlook.

The easiest way someone can tell this is a good blog post; you refer to yourself as a ninja and link to Real Ultimate Power. That is one of the best pages in the universe. Next to "The Best Page In the Universe" of course.
October 24, 2007 21:38
Very nice. Any reason you're restricting forwarding as well, rather than just blocking the reply-all?
October 24, 2007 21:39
does that do what I think it does? Run arbtirary code on the client machine?
October 24, 2007 21:54
I liked this oprion. It would be nice if it is possible to use like a toggle button (revert the option to enable replyall/forward) which would change the icon when clicked.
October 24, 2007 21:54
I'm with you Ayende. What's up with allowing macro code to execute on another machine? Didn't MS block this years ago?
October 24, 2007 22:01
No, it's just a metadata switch. It's just a name:value pair that Outlook respects. It only works internally.
October 24, 2007 22:02
Marius, no reason, just to see what else could be set. Easily changed.
October 24, 2007 22:06
I see, very cool then, but you probably should make it explicit.
October 24, 2007 22:27
This is a real cool feature. But here is a UI catch (?). Is there a way to know if I've already clicked the icon (for x times, for example). Compare this to the 'Low' and 'High' importance icons in Outlook 2007. When either one of them is clicked, it remains highlighted. So if I clicked 'Low' at the beginning of my email and later,I want to check if I really did click 'Low', I can make sure by 'seeing' the icon. Same with 'High'. But the 'NoReplyAll' macro icon doesn't seem to have this functionality. And if I forget, the workaround is to close the current mail window and open a new one. Or, is there a better one (or nothing at all)?...
October 24, 2007 22:28
How about bcc? This works always on every platform. People don't get to see all the users you sent the email to, but many times that's a good thing.

October 24, 2007 22:41
How about using the "Have Replies Sent To" feature?
October 24, 2007 22:47
Bruce - "Have replies sent to" only affects replies not Reply to All.
Vijay - It's just two lines of code. ;) I like your feature idea, will you write the other two lines?
October 24, 2007 22:59
Is there a way to enable/disable the tool bar button as it is pressed? So we know if "repy to all" is enable or not? Code change would have to happen as well.
October 24, 2007 23:24
The more interesting question of course is why you feel the need to disable these features... ;-)
October 24, 2007 23:50
Sub NoReplyAll()
Dim btn As CommandBarButton
Set btn = ActiveInspector.CommandBars("Standard").Controls("No Reply To All")

'btn.Tag - Enable/Disable 'No Reply to All'
If (btn.Tag = vbNullString) Then btn.Tag = False

If (btn.Tag) Then
btn.Tag = False 'Disable feature
ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = btn.Tag
ActiveInspector.CurrentItem.Actions("Forward").Enabled = btn.Tag
'How to highlight toolbar icon?
btn.Tag = True 'Enable feature
ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = btn.Tag
ActiveInspector.CurrentItem.Actions("Forward").Enabled = btn.Tag
'How to remove highlight from toolbar icon?
End If
End Sub
October 24, 2007 23:52
I'm looking for the same effect as the confidential icon.
October 25, 2007 0:06
Using the FaceId property
October 25, 2007 0:28

Trivia: At Microsoft they/we say "little-r" me when we want a reply directly to us or "Big-R" when we mean Reply To All.

I believe this terminology dates all the way back to win Wzmail was the standard email client within Microsoft. (1990 or so. I think Winmail replaced it in '91.)
October 25, 2007 0:44
Good tip, Scott! - thanks for the motivation to create another macro that solves a long-time problem for me:
October 25, 2007 2:58
This is nice but what I would really like to see is a feature in Outlook that warns you when you do a reply all that the email will be sent to 50,000 people. I think that would get folks attention and make them think twice about replying to all. I'm not sure what a reasonable default limit check should be - perhaps 40 people?? Of course, you would make it configurable by the user and group policy.
October 25, 2007 2:59
Just tried it in Outlook 2002 and it works as well; although it removes the ReplyToAll button from the toolbar instead of just dimming/disabling as it does in '07.

I did notice that (in Outlook 2002 anyway) the ReplyToAll icon in the application toolbar remains, so users who read their email in the preview window will still be able to reply to all.
October 25, 2007 3:41
I agree with Tom, why not just BCC, that works on any email client for both sender and receivers. If you want people to see who you're sending to you can put a quick note at the top of the message, e.g. [BCC All Employees]
October 25, 2007 3:58
I agree with Tom and Matt, this is an absurd solution to something that can be so easily rectified by just BCC'ing the email list address.
October 25, 2007 4:01
Ryan and Matt and Tom - With all due respect, there are loarger email workflow scenarios to consider. The problem with BCC'ing the list is that the rules that the person has setup won't fire and suddently the email will show up in their Inbox and not in the list folder.
October 25, 2007 4:03
Very nice, thanks!

Ryan, one of the big reasons to have this fix is to avoid BCC - because BCC breaks everyone's inbox rules. The BCC mail shows up in the main inbox instead of the sub-folder assigned by the inbox rules.
October 25, 2007 5:13
Scott -

First, love the blog. Second, not sure how you keep the content so fresh with everything else you have going on! Thanks for all the info and being such an asset to the developer community.

October 25, 2007 13:00
Thanks for the tip!

How does this work in Outlook 2003? I can't find a way to add the macro to the mail.
October 25, 2007 13:11
Good one.But it doesn't solve the problem for many of us because the person whom you are sending the mail might not use outlook to read the mail :(
October 25, 2007 16:19
@Rob: Although the ReplyToAll icon is still visible in the application toolbar, it is disabled. Try clicking on it and you should see a message to that effect.

@Computhomas: In Outlook 2003, open a new email, click on Tools > Customize, go to the Commands tab, pick the Macros category, and you should see your macro. Just drag this macro to the appropriate place in your email toolbar.
October 25, 2007 18:05
computhomas - Here is the macro that I used to solve my Outlook 2003 problems (unable to customize my message toolbar):

Sub NoReplyAll()
Dim mail As MailItem
Set mail = Application.CreateItem(olMailItem)
mail.Actions("Reply to All").Enabled = False
mail.Actions("Forward").Enabled = False
End Sub

This macro is on my standard toolbar in outlook.
October 26, 2007 16:36
I apologize up front, but I am still confused. Is this a macro that is being executed by Outlook on the recipient's machine?
October 28, 2007 0:43 I the only person that thinks allowing macros in incoming e-mails to execute by defaul is a tremendous security hazard...?

Even if your other reciptients are in your company (or outside your company but still running outlook) this seems to me to be a hugely dangerous approach to solving a lack of situational awareness on the part of your recipients, no...?

Or am I misunderstanding the approach here...?
October 29, 2007 22:24
Hilarious (and sad, and scary) how so many people immediately assume its a security breach.

Good one Scott. :)
October 30, 2007 0:56
As a joke you could disable the Reply as well, and then send a message to your boss: If I don't get a reply from you I'll assume I can leave after lunch.
November 02, 2007 3:02
Cool trick :)

Silly question of the week time but is there really any value when Joe User can just:

- Hit reply and then change the email address / add entries into the CC field?
- Create a new email and copy / paste the content

You get the drift
November 02, 2007 4:13
Of course. To prevent those would require IRM. This trick is just to discourage the knee-jerk Reply To All.
November 02, 2007 22:51
That's a nice little piece of work -- but if I'm using Outlook 2003 with Word 2003 as my email editor, Word 2003 takes over and refuses to recognize ActiveInspector (and most of the rest of the email objects, as near as I can tell). Is there a workaround to make Word 2003 realize that it's working on an email so we can use this simple & elegant workaround for human carelessness?
November 02, 2007 23:30
Ah, n/m -- just had to jump to a few conclusions. This seems to work for getting the Word editor back to Outlook 2003-Inspection...

Dim myolapp As Object
Dim myinspector As Object
Set myolapp = CreateObject("Outlook.Application")
Set myinspector = myolapp.ActiveInspector
myinspector.CurrentItem.Actions("Reply to All").Enabled = False
myinspector.CurrentItem.Actions("Forward").Enabled = False
November 05, 2007 22:34
Great work Scott! I added this line to discourage the knee-jerk Reply:

ActiveInspector.CurrentItem.Actions("Reply").Enabled = False
November 23, 2007 22:12
The ReplyToAll icon in the application toolbar is still visible/clickable in OL2003 when viewing messages in the preview pane, but if you actually click it you get a 'stop' message, so it is still functioning.

Great tip!

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.