Hello, fellow obsessive-compulsive! I shall use this!
![]() |
Patch reliability is unclear. Unless you have an immediate, pressing need to install a specific patch, don't do it. |
SIGN IN | Not a member? | REGISTER | PLUS MEMBERSHIP |
-
Remove reply indenting from HTML message (Outlook
Home » Forums » AskWoody support » Productivity software by function » MS Outlook and email programs » Remove reply indenting from HTML message (Outlook
- This topic has 11 replies, 3 voices, and was last updated 16 years, 10 months ago.
AuthorTopicViewing 0 reply threadsAuthorReplies-
WSjscher2000
AskWoody LoungerApril 22, 2005 at 8:27 pm #940585(Edited by jscher2000 on 22-Apr-05 14:27. )
Indenting of replies really annoys me. This macro will remove indenting from HTML messages.
- April 22, 2005 – A new version of the UnBlockQuote procedure, now entitled UnIndentHTML, is in the attachment. You will still need the WildReplace function from the body of this message in order to run it.
April 12, 2005 – Original limited version.
[/list]Sub UnBlockQuote() ' Remove BLOCKQUOTE tags, which cause annoying indenting, from HTML message ' Not fault tolerant, do not run without HTML message open and active If MsgBox("Remove the BLOCKQUOTE tags from this message?", _ vbQuestion + vbYesNo) = vbNo Then Exit Sub Dim msg As MailItem Set msg = ActiveInspector.CurrentItem msg.HTMLBody = Replace(msg.HTMLBody, "", vbNullString, , , vbTextCompare) msg.HTMLBody = WildReplace(msg.HTMLBody, "
", vbNullString) Set msg = Nothing End Sub Private Function WildReplace(strExpression As String, strFind As String, _ strReplace As String, Optional bolReplaceAll As Boolean = True, _ Optional bolCaseSensitive As Boolean = False) As String 'reference to Microsoft VBScript Regular Expressions NOT required... uses late binding 'requires VBScript 5 = IE 5.x 'perform minimal parameter checking If (strExpression = vbNullString) Or (strFind = vbNullString) Then WildReplace = strExpression Exit Function End If 'Dim objRegExp As RegExp Dim objRegExp As Object 'instantiate RegExp object 'Set objRegExp = New RegExp Set objRegExp = CreateObject("vbscript.regexp") objRegExp.IgnoreCase = Not bolCaseSensitive objRegExp.Global = bolReplaceAll ' Pattern syntax: Visual Basic Scripting Edition-Pattern Property objRegExp.Pattern = strFind WildReplace = objRegExp.Replace(strExpression, strReplace) Set objRegExp = Nothing End Function
What’s strange is that closing the message doesn’t seem to generate a “save/don’t save” dialog. So if you’re not sure you want to run it, don’t run it.
-
WSjscher2000
AskWoody LoungerApril 15, 2005 at 8:15 pm #941295Turns out that there is another way in which HTML is indented, if Word is involved as the mail editor: a LEFT-MARGIN property is set in a paragraph or other tag. This updated version addresses those as well. However, if the margin was there for some reason other than indenting a reply, it will be removed anyway, so that could be a problem for some types of stationery or heavily formatted newsletters.
Code:Sub UnBlockQuote() ' Remove BLOCKQUOTE tags, which cause annoying indenting, from HTML message ' Not fault tolerant, do not run without HTML message open and active If MsgBox("Remove the BLOCKQUOTE tags and MARGIN-LEFT settings from this message?", _ vbQuestion + vbYesNo) = vbNo Then Exit Sub Dim msg As MailItem Set msg = ActiveInspector.CurrentItem ' Remove end tag and then start tag msg.HTMLBody = Replace(msg.HTMLBody, "", vbNullString, , , vbTextCompare) msg.HTMLBody = WildReplace(msg.HTMLBody, "
", vbNullString) ' Remove MARGIN-LEFT property and then clean up empty style tags, if any msg.HTMLBody = WildReplace(msg.HTMLBody, "MARGIN-LEFT: [0-9.]+in", vbNullString) msg.HTMLBody = Replace(msg.HTMLBody, " style=""""", vbNullString, , , vbTextCompare) Set msg = Nothing End Sub Private Function WildReplace(strExpression As String, strFind As String, _ strReplace As String, Optional bolReplaceAll As Boolean = True, _ Optional bolCaseSensitive As Boolean = False) As String 'reference to Microsoft VBScript Regular Expressions NOT required... uses late binding 'requires VBScript 5 = IE 5.x 'perform minimal parameter checking If (strExpression = vbNullString) Or (strFind = vbNullString) Then WildReplace = strExpression Exit Function End If 'Dim objRegExp As RegExp Dim objRegExp As Object 'instantiate RegExp object 'Set objRegExp = New RegExp Set objRegExp = CreateObject("vbscript.regexp") objRegExp.IgnoreCase = Not bolCaseSensitive objRegExp.Global = bolReplaceAll ' Pattern syntax: [url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vspropattern.asp[/url] objRegExp.Pattern = strFind WildReplace = objRegExp.Replace(strExpression, strReplace) Set objRegExp = Nothing End Function
This is targeted to countries where margin indents are measured in inches. I’m sure there’s a way to internationalize that, but let’s see if there’s any market demand first.
-
WSJohnBF
AskWoody Lounger -
WSjscher2000
AskWoody LoungerApril 15, 2005 at 8:39 pm #941303Unless I need HTML, I generally convert my reply or forward to plain text, which effectively removes the stationery.
To create a macro to remove it, I suspect that you’d have to rip out all the style definitions and background graphics. Could there be anything else? And I suspect you’d need code for both “normal” and Word-generated HTML. It would be interesting to write a macro that runs HTMLBody through HTML Tidy for clean-up. I wonder what would come back?
-
WSJohnBF
AskWoody LoungerApril 15, 2005 at 8:54 pm #941306By Notepad editing saved HTML message files created with the Outlook Editor and with Word, it looks like I need to remove
” background=cid:”
and all following junk through to the
“>”I hate to even get messages with stationery. But I don’t always change the format when I get HTML, because I get a lot of tables that get their format trashed by conversion to plain text.
-
WSjscher2000
AskWoody Lounger -
WSJohnBF
AskWoody Lounger -
WSjscher2000
AskWoody LoungerApril 15, 2005 at 11:00 pm #941320Hmmm, I found one of the little devils in my archives. There is a line break in the tag because it is so long, which causes the RegExp syntax not to work. Let me see… this is getting awfully repetitive, but it’s fast and worthwhile, so we can cover both cases: one line and two:
‘ Kill background image and everything else in the BODY tag (normal, Word)
msg.HTMLBody = WildReplace(msg.HTMLBody, “”, “”)
msg.HTMLBody = WildReplace(msg.HTMLBody, “”, “”)Should it be an optional extra? Naaaah!
Added: This was the Word BODY tag I found; there is some kind of “ivy” or other plant growing down the left side of the background image, hence the big margin setting.
I wonder whether the embedded graphic image data will get discarded if I click Forward first and clean the new message (rather than changing the original)? Would be a nice bonus, but I wouldn’t count on it…
Hmmm… I notice that the style tags use single quotation marks instead of double. Yet another thing to fix in my code.
-
Andrew Lockton
AskWoody_MVPAugust 7, 2008 at 7:30 pm #1120193Standing on the shoulders of giants, I have had a play with this and morphed it with VBA Macro to Remove Stationery from Email Message and to heavily strip the default html metadata content in emails when replying or forwarding. The particular problem I had was trying to standardise the fonts in an email when replying or forwarding. The default font where you type your message didn’t appear to be controllable in the options in Outlook 2007 – well they don’t respond to the obvious setting anyway.
Having never played with regexp before this was a big learning experience for me and it took a long time for me to work out why it couldn’t find anything when there were line breaks in the string. I would be interested in any suggestions to make the code more compact and work around the linebreaks problem in a more elegant way than my kludgy zxzx method.
Sub EmailCleaner() On Error GoTo EmailCleaner_Error Dim myMessage As Outlook.MailItem Dim str As String ' First, check to see if we are in preview-pane mode or message-view mode ' If neither, quit out Select Case TypeName(Outlook.Application.ActiveWindow) Case "Explorer" Set myMessage = ActiveExplorer.Selection.Item(1) Case "Inspector" Set myMessage = ActiveInspector.CurrentItem Case Else MsgBox ("No message selected.") Exit Sub End Select ' Sanity check to make sure selected message is actually a mail item If TypeName(myMessage) "MailItem" Then MsgBox ("No message selected.") Exit Sub End If 'Debug.Print myMessage.HTMLBody ' Remove attributes from tag str = myMessage.HTMLBody str = WildReplace(str, "]*>", "" & vbCrLf & " ", True, False) 'simplify body str = WildReplace(str, "
", " ", True, False) 'simplify para tags str = WildReplace(str, "", "", True, False) 'simplify bold tags str = WildReplace(str, "
", " ", True, False) 'simplify br tags str = WildReplace(str, "]*>", "", True, False) 'remove img tags str = WildReplace(str, "]*>", "", True, False) 'remove font tags str = Replace(str, "", "", , , vbTextCompare) 'remove closing font tags str = WildReplace(str, "]*>", "", True, False) 'remove span tags str = Replace(str, "", "", , , vbTextCompare) 'remove closing span tags str = WildReplace(str, "
", "", True, False) 'remove div tags str = Replace(str, "", "", , , vbTextCompare) 'remove closing div tags 'replace the complete head tag area with a simplified formatting override str = WildReplace(str, "<head.+?", _ "p {font-family:'Lucida Sans','sans-serif';color:black;font-size:10pt}", _ True, False) 'simplify head str = Replace(str, "", "", , , vbTextCompare) str = Replace(str, "", "", , , vbTextCompare) str = Replace(str, vbCrLf & vbCrLf, vbCrLf, , , vbTextCompare) str = Replace(str, vbCrLf & vbCrLf, vbCrLf, , , vbTextCompare) str = Replace(str, " ", " ", , , vbTextCompare) str = Replace(str, " ", "", , , vbTextCompare) Debug.Print str myMessage.HTMLBody = str '' Finally, save the modified message '' If this line is disabled, you can't run the code from the preview mode 'myMessage.Save Exit Sub EmailCleaner_Error: MsgBox Err.Number & vbCr & Err.Description Exit Sub End Sub '================================================== Private Function WildReplace(strExpression As String, strFind As String, _ strReplace As String, Optional bolReplaceAll As Boolean = True, _ Optional bolCaseSensitive As Boolean = False) As String 'reference to Microsoft VBScript Regular Expressions NOT required... uses late binding 'requires VBScript 5 = IE 5.x 'perform minimal parameter checking If (strExpression = vbNullString) Or (strFind = vbNullString) Then WildReplace = strExpression Exit Function End If 'Dim objregexp As regexp Dim objregexp As Object 'instantiate regexp object 'Set objregexp = New regexp Set objregexp = CreateObject("vbscript.regexp") objregexp.IgnoreCase = Not bolCaseSensitive objregexp.Global = bolReplaceAll ' Pattern syntax: Visual Basic Scripting Edition-Pattern Property objregexp.Pattern = strFind 'outer lines temporarily replace the line feeds to avoid the wildcard search tripping on them strExpression = Replace(strExpression, vbCrLf, "zxzx") strExpression = objregexp.Replace(strExpression, strReplace) WildReplace = Replace(strExpression, "zxzx", vbCrLf) Set objregexp = Nothing End Function -
WSjscher2000
AskWoody LoungerAugust 8, 2008 at 1:25 pm #1120307Note to readers: the Lounge software interprets a lower case as a line break and strips it. It will display the tag in uppercase. So in the post above, where there is an inexplicable line break, you probably need to reinsert the lower case . Or if you see an upper case , you should replace it with lower case, to avoid potential case sensitivity problems with matching.
-
-
-
-
WSjscher2000
AskWoody LoungerAugust 8, 2008 at 1:32 pm #1120308Oops, the attachment was lost in the great server hard drive crash. I can’t find that .txt file, but this is what I currently have in Outlook:
Sub UnIndentHTML()
' Remove BLOCKQUOTE and other tags which cause annoying indenting in HTML messages
If Inspectors.Count = 0 Then
MsgBox "Please open an HTML-format message before running this macro!", _
vbExclamation + vbOKOnly
Exit Sub
End If
If ActiveInspector.EditorType olEditorHTML Then
MsgBox "This macro is for HTML-format messages only, sorry!", _
vbExclamation + vbOKOnly
Exit Sub
End If
If MsgBox("Remove the BLOCKQUOTE tags and MARGIN-LEFT settings from this message?", _
vbQuestion + vbYesNo) = vbNo Then Exit Sub
Dim msg As MailItem
Set msg = ActiveInspector.CurrentItem
' Remove end tag and then start tag for BLOCKQUOTE
msg.HTMLBody = Replace(msg.HTMLBody, "", vbNullString, , , vbTextCompare)
msg.HTMLBody = WildReplace(msg.HTMLBody, "", vbNullString)
' Remove MARGIN-LEFT property and then clean up empty style tags, if any
msg.HTMLBody = WildReplace(msg.HTMLBody, "MARGIN-LEFT: [0-9.]+in", vbNullString)
msg.HTMLBody = Replace(msg.HTMLBody, " style=""""", vbNullString, , , vbTextCompare)
' Kill background image and everything else in the BODY tag (normal, Word)
msg.HTMLBody = WildReplace(msg.HTMLBody, "", "")
msg.HTMLBody = WildReplace(msg.HTMLBody, "", "")
If InStr(1, msg.HTMLBody, "- 0 Then
If MsgBox("Remove the UL tags from this message? UL tags may be used for " & _
"indenting, but also bulleted lists.", _
vbQuestion + vbYesNo) = vbYes Then
' Remove end tag and then start tag for UL
msg.HTMLBody = Replace(msg.HTMLBody, "[/list]", vbNullString, , , vbTextCompare)
msg.HTMLBody = WildReplace(msg.HTMLBody, "- ", vbNullString)
End If
End If
Set msg = Nothing
End Sub
-
Viewing 0 reply threads -

Plus Membership
Donations from Plus members keep this site going. You can identify the people who support AskWoody by the Plus badge on their avatars.
AskWoody Plus members not only get access to all of the contents of this site -- including Susan Bradley's frequently updated Patch Watch listing -- they also receive weekly AskWoody Plus Newsletters (formerly Windows Secrets Newsletter) and AskWoody Plus Alerts, emails when there are important breaking developments.
Get Plus!
Welcome to our unique respite from the madness.
It's easy to post questions about Windows 11, Windows 10, Win8.1, Win7, Surface, Office, or browse through our Forums. Post anonymously or register for greater privileges. Keep it civil, please: Decorous Lounge rules strictly enforced. Questions? Contact Customer Support.
Search Newsletters
Search Forums
View the Forum
Search for Topics
Recent Topics
-
Excessive security alerts
by
WSSebastian42
4 hours, 2 minutes ago -
* CrystalDiskMark may shorten SSD/USB Memory life
by
Alex5723
4 hours, 50 minutes ago -
Ben’s excellent adventure with Linux
by
Ben Myers
48 minutes ago -
Seconds are back in Windows 10!
by
Susan Bradley
6 hours, 2 minutes ago -
WebBrowserPassView — Take inventory of your stored passwords
by
Deanna McElveen
1 hour, 54 minutes ago -
OS news from WWDC 2025
by
Will Fastie
6 hours, 5 minutes ago -
Need help with graphics…
by
WSBatBytes
4 hours, 45 minutes ago -
AMD : Out of Bounds (OOB) read vulnerability in TPM 2.0 CVE-2025-2884
by
Alex5723
20 hours, 18 minutes ago -
Totally remove or disable BitLocker
by
CWBillow
19 hours, 11 minutes ago -
Windows 10 gets 6 years of ESU?
by
n0ads
7 hours, 7 minutes ago -
Apple, Google stores still offer China-based VPNs, report says
by
Nibbled To Death By Ducks
1 day, 7 hours ago -
Search Forums only bring up my posts?
by
Deo
1 day, 7 hours ago -
Windows Spotlight broken on Enterprise and Pro for Workstations?
by
steeviebops
1 day, 18 hours ago -
Denmark wants to dump Microsoft for Linux + LibreOffice
by
Alex5723
1 day, 11 hours ago -
How to get Microsoft Defender to honor Group Policy Setting
by
Ralph
1 day, 19 hours ago -
Apple : Paragon’s iOS Mercenary Spyware Finds Journalists Target
by
Alex5723
2 days, 5 hours ago -
Music : The Rose Room – It’s Been A Long, Long Time album
by
Alex5723
2 days, 6 hours ago -
Disengage Bitlocker
by
CWBillow
1 day, 20 hours ago -
Mac Mini M2 Service Program for No Power Issue
by
Alex5723
2 days, 8 hours ago -
New Win 11 Pro Geekom Setup questions
by
Deo
1 day, 7 hours ago -
Windows 11 Insider Preview build 26200.5651 released to DEV
by
joep517
2 days, 15 hours ago -
Windows 11 Insider Preview build 26120.4441 (24H2) released to BETA
by
joep517
2 days, 15 hours ago -
iOS 26,, MacOS 26 : Create your own AI chatbot
by
Alex5723
2 days, 19 hours ago -
New PC transfer program recommendations?
by
DaveBoston
1 day ago -
Windows 11 Insider Preview Build 22631.5545 (23H2) released to Release Preview
by
joep517
2 days, 23 hours ago -
Windows 10 Build 19045.6029 (22H2) to Release Preview Channel
by
joep517
2 days, 23 hours ago -
Best tools for upgrading a Windows 10 to an 11
by
Susan Bradley
2 days, 12 hours ago -
The end of Windows 10 is approaching, consider Linux and LibreOffice
by
Alex5723
1 day, 16 hours ago -
Extended Windows Built-in Disk Cleanup Utility
by
bbearren
2 days, 1 hour ago -
Win 11 24H2 June 2025 Update breaks WIFI
by
dportenlanger
3 days, 18 hours ago
Recent blog posts
- Ben’s excellent adventure with Linux
- Seconds are back in Windows 10!
- WebBrowserPassView — Take inventory of your stored passwords
- OS news from WWDC 2025
- Best tools for upgrading a Windows 10 to an 11
- Master patch listing for June 10, 2025
- 24H2 may not be offered June updates
- June 2025 updates are out
Key Links
Want to Advertise in the free newsletter? How about a gift subscription in honor of a birthday? Send an email to sb@askwoody.com to ask how.
Mastodon profile for DefConPatch
Mastodon profile for AskWoody
Home • About • FAQ • Posts & Privacy • Forums • My Account
Register • Free Newsletter • Plus Membership • Gift Certificates • MS-DEFCON Alerts
Copyright ©2004-2025 by AskWoody Tech LLC. All Rights Reserved.