Update: Alex remembered the add-in I ment: QuoteFix. Due to incompatibility issues with nowadays Outlook versions the guys published a VBA script doing mostly the same as the older add-in. Alex did some fine tuning on their script and applied parts of my snippet. Try his gist to get the best of both (mine and QuoteFix). Works like a charm for me.
When using Outlook to send/receive emails you usually press the reply (or reply all, forward) button to send back an answer. This works like a charm if the email you want to reply to was sent in plain text and you have the "line indention with prefix" option enabled in the Outlook settings.
Thus commenting the received email is pretty easy. Obviously there is no option to configure Outlook to reply to a HTML/RichText message with a plain text email too. So replying to such formatted mails with the "line indention with prefix" option enabled looks like this:
If you now try to write inline comments it is IMHO really hard for the recipient to find those in your reply. One might say: you can convert the reply message to plain text. Yes you can! But this won't convert the silly blue line into '>' prefixes. So I was looking for an add-in to solve this problem. I thought there was one I used in earlier Outlook versions, but couldn't find it anymore. After boongleing for an hour I decided to implement this using VBA. This is the result:
Forward = 0
Reply = 1
ReplyAll = 3
Function DisplayPlainTextMessage(msg As MailItem, addPrefix As Boolean)
Dim prefix As String
If addPrefix = True Then prefix = "> "
msg.BodyFormat = olFormatPlain
Dim lines() As String
lines = Strings.Split(msg.body, vbCrLf)
Dim newBody As String
For i = 0 To UBound(lines)
If Trim(lines(i)) = "--" Then GoTo Break
newBody = newBody & prefix & Trim(lines(i)) & vbCrLf
msg.body = newBody
Function SendAsPlainText(how As AnswerType)
On Error GoTo ErrorHandler
Dim msg As Outlook.MailItem
Set msg = GetMailItem
If msg Is Nothing Then
MsgBox ("No message selected.")
Select Case how
Call DisplayPlainTextMessage(msg.Forward, msg.BodyFormat <> olFormatPlain)
Call DisplayPlainTextMessage(msg.Reply, msg.BodyFormat <> olFormatPlain)
Call DisplayPlainTextMessage(msg.ReplyAll, msg.BodyFormat <> olFormatPlain)
MsgBox Err.Number & " - " & Err.Description
Function GetMailItem() As Outlook.MailItem
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
If TypeName(ActiveExplorer.Selection.Item(1)) = "MailItem" Then
Set GetMailItem = ActiveExplorer.Selection.Item(1)
If TypeName(ActiveInspector.CurrentItem) = "MailItem" Then
Set GetMailItem = ActiveInspector.CurrentItem
On Error GoTo 0
You can now modify your ribbon bar to add new buttons to the three subs ReplyAsPlainText, ReplyAllAsPlainText, ForwardAsPlainText:
I am studying computer science at the University of Leipzig
and will get my Master of Science degree soon. Technologies around Microsoft .NET are very interesting for me.
That is why I am part of the Microsoft Student Partners program since 2006. In 2008 I earned my Microsoft Certified
Technology Specialist certification for Windows Presentation Foundation Applications.
Next to those technological hobbies I like digital art, photography, travelling and music.
Powered by: newtelligence dasBlog 2.3.9074.18820
The opinions expressed herein are my own personal opinions and do not represent
my employer's view in anyway.
© Copyright 2004-2013, Marcel Hoyer