Re: Code won't execute Main Macro Calls - non breaking spaces



Okay, will do that next time Graham.

This is looks great thank you for doing the code.

"Graham Mayor" <gmayor@xxxxxxxxxxxxxxxxxx> wrote in message
news:e2OWzSdyGHA.1256@xxxxxxxxxxxxxxxxxxxxxxx
It would have been better if you had continued within the original thread.

The search patterns already quoted in that thread are suited only to the
formats you quoted there. Here you have three different number/letter
combinations. You will have to search for each pattern separately and
search the dates first or the months will cause problems. For your given
list the following will work. I have separated each find string and each
replace string for the sake of clarification. Start with the dates, then
the longest string, then work down to the shorter strings. Each is
replaced by the corresponding item in the replacement text array.

Sub ReplaceList()
Dim vFindText As Variant
Dim vReplText As Variant
Dim i As Long

vFindText = Array("([0-9]{1,2}) ([a-zA-Z]{3,}) ([0-9]{4})", _
"([A-Z]{3,4}) ([0-9]{2,}) ([0-9]{2,}) ([0-9]{2,}) ([0-9]{2,})", _
"([A-Z]{3,4}) ([0-9]{2,}) ([0-9]{2,}) ([0-9]{2,})", _
"([A-Z]{3,4}) ([0-9]{2,})")
vReplText = Array("\1^0160\2^0160\3", _
"\1^0160\2^0160\3^0160\4^0160\5", _
"\1^0160\2^0160\3^0160\4", _
"\1^0160\2")
With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Format = True
.MatchCase = True

For i = LBound(vFindText) To UBound(vFindText)
.Text = vFindText(i)
.Replacement.Text = vReplText(i)
.Execute replace:=wdReplaceAll
Next i
End With

End Sub


--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>

Ann Marie wrote:
Hi again Doug and Greg,


My MAIN MACRO does not execute the first 2 options DO FIND AND
REPLACE. But both syntax work in the Find and Replace window. The
remainder of the MAIN MACRO options execute.



Would appreciate if someone could point me in the right direction to
fix this. I would like to expand on my call routines but one step at
a time. Would really appreciate it.



TEST DATA:



20 June 2007

XXX 19 233 444 555

XXX 000 222 222

10 MAY 2006

13 JUNE 2006

13 may 2006

XXXX 123444

And this is a test sentence. This replace is just a test. Thank you
for helping? And that is that.



***MACROS***

Option Explicit



Sub DoFindReplace(FindText As String, ReplaceText As String, _

Optional bMatchWildCards As Boolean = False)



With Selection.Find

.ClearFormatting

.Replacement.ClearFormatting

.Text = FindText

.Replacement.Text = ReplaceText

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = False

.MatchWholeWord = False

.MatchWildcards = False

.MatchSoundsLike = False

.MatchAllWordForms = False



Do While .Execute

'Keep going until nothing found

.Execute Replace:=wdReplaceAll

Loop

'Free up some memory

ActiveDocument.UndoClear

End With



End Sub





'Call the macro:



Public Sub MainMacro()



'Replace spaces with non breaking spaces

Call
DoFindReplace("([0-9]{1,2})([ADFJMNOS][A-Za-z]{2,})([0-9]{4})",
"\1^0160\2^0160\3^0160\4")


'Dates - replace spaces with non breaking spaces

Call
DoFindReplace(FindText:="([0-9]{1,2})(([0-9]{1,2})([ADFJMNOS][A-Za-z]{2,})([0-9]{4})",
ReplaceText:="\1^0160\2^0160\3", bMatchWildCards:=True)



'Remove double spaces TEST WORKS

Call DoFindReplace(" ", " ")



'Remove all double tabs TEST WORKS

Call DoFindReplace("^t^t", "^t")



'Remove empty paras (unless they follow a table or start or finish
a doc) TEST WORKS

Call DoFindReplace("^p^p", "^p")



End Sub




.



Relevant Pages

  • Re: Code wont execute Main Macro Calls - non breaking spaces
    ... replace string for the sake of clarification. ... My MAIN MACRO does not execute the first 2 options DO FIND AND ... Sub DoFindReplace(FindText As String, ReplaceText As String, _ ... .MatchWholeWord = False ...
    (microsoft.public.word.vba.general)
  • Re: Code wont execute Main Macro Calls - non breaking spaces
    ... I have separated each find string and each replace ... Sub ReplaceList() ... My MAIN MACRO does not execute the first 2 options DO FIND AND ... Sub DoFindReplace(FindText As String, ReplaceText As String, _ ...
    (microsoft.public.word.vba.general)
  • Re: Code wont execute Main Macro Calls - non breaking spaces
    ... Public Sub MainMacro() ... Sub DoFindReplace(FindText As String, ReplaceText As String, ... My MAIN MACRO does not execute the first 2 options DO FIND AND REPLACE. ...
    (microsoft.public.word.vba.general)
  • Re: Code wont execute Main Macro Calls - non breaking spaces
    ... Public Sub MainMacro() ... Sub DoFindReplace(FindText As String, ReplaceText As String, ... My MAIN MACRO does not execute the first 2 options DO FIND AND REPLACE. ...
    (microsoft.public.word.vba.general)
  • RE: SQL stored procedure executing twice
    ... I wasn't aware that DLookupwould execute the "domain" more than once. ... caused the stored procedure to execute twice. ... Dim stDocName As String ... My pass-thru query properties ...
    (microsoft.public.access.modulesdaovba)