#1
|
|||
|
|||
Macro for Find/replace to remove space before Hard Return
I have been trying to set up a Word Macro to remove a space before a hard return. I am able to get it to work on the main text properly, but when I added lines to apply it to the footnotes, it doesn't work properly. Instead of just removing the space it removes the space and then after the hard return, it adds a space and a hard return. I can't figure out how to tweak the text of the macro to resolve this. Here is the macro I am trying to use:
Sub SpaceBeforeHardReturn() ' ' SpaceBeforeHardReturn Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = " ^p" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Set Footnotes = ActiveDocument.StoryRanges(wdFootnotesStory) Footnotes.Find.ClearFormatting Footnotes.Find.Replacement.ClearFormatting With Footnotes.Find .Text = " ^p" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Footnotes.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting End Sub Thanks for any advice. |
#2
|
|||
|
|||
I suppose it is because of some of the "SMART" features of Word sometimes deleting spaces in front of paragraph marks can be confounding. This is exacerbated when dealing with the footnote storyrange because it is a Medusa in itself. You might try:
Code:
Sub ScratchMacro() Selection.Find.Replacement.ClearFormatting Dim oRng As Range Set oRng = ActiveDocument.StoryRanges(wdFootnotesStory) With oRng.Find .ClearFormatting .Text = " ^p" While .Execute oRng.Characters.First.Text = "~" oRng.Characters.First.Delete oRng.Collapse wdCollapseEnd Wend End With lbl_Exit: Exit Sub End Sub |
#3
|
|||
|
|||
That seems to work. Thanks.
Since I'm still new to working in VBA, what is the purpose of the: Quote:
|
#4
|
|||
|
|||
Well with testing here, I first had to replace the "space" preceding the paragraph mark with a temporary character "~" and then delete it. Otherwise the space wouldn't be deleted.
|
#5
|
|||
|
|||
Okay, it appears it is the option "Smart Cut and Paste that causes the issue with not being able to delete the space directly:
Code:
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey Dim oRng As Range Dim bSCP As Boolean bSCP = Options.PasteSmartCutPaste Options.PasteSmartCutPaste = False Set oRng = ActiveDocument.StoryRanges(wdFootnotesStory) With oRng.Find .Text = " ^p" While .Execute oRng.Characters.First.Delete oRng.Collapse wdCollapseEnd Wend End With Options.PasteSmartCutPaste = bSCP lbl_Exit: Exit Sub End Sub |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Find / Replace hard Carriage Return with Line break. | GreenBoy | Word | 2 | 03-11-2018 02:32 AM |
Code to find numerical string + space throughout document & replace them with Comma | Robert Kay | Word VBA | 6 | 02-21-2018 04:41 PM |
Find and Replace with space | cheech1981 | Word | 3 | 03-29-2017 02:33 PM |
Hard page return? | markg2 | Outlook | 0 | 09-11-2012 08:49 AM |
remove color from find/replace? | Cobb78 | Word | 1 | 05-26-2012 06:16 PM |