Hi Kilosub,
Try:
Code:
Sub StatementReformatter()
Dim StrFind As String, StrRep As String
Dim myRange As Range, i As Long
StrFind = "[ ]{8}[0-9]{1,2}/[0-9]{2}/[0-9]{2}(^13[ ]{8}[0-9]{10}^13)|( BONUS POINTS AS AT)"
StrFind = StrFind & "|( Your card will expire on[!^13]{1,}^13)|( Dear valued cardmember[!^13]{1,}^13)"
StrFind = StrFind & "|( Collection date)|( Expiry date of rebate voucher :)([!^13]{1,}^13)"
StrFind = StrFind & "|( For enquiries[!^13]{1,}^13)|( I acknowledged receipt[!^13]{1,}^13)"
StrFind = StrFind & "|( and / OR[!^13]{1,}^13)|( Signature:[!^13]{1,}^13)|( IC/ Passport No:[!^13]{1,}^13)"
StrRep = "^m^p^p^p^p^p^p\1^p^p|^p^p^p^p\1|^p\1|^p\1^p|^p\1|^p\1#\2^p|^p\1^p|^p\1^p|^p^p\1^p^p|^p\1^p|^p\1^p"
With ActiveDocument
For i = 0 To UBound(Split(StrFind, "|"))
Set myRange = .Range
With myRange.Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
.Text = Split(StrFind, "|")(i)
.Replacement.Text = Split(StrRep, "|")(i)
.Execute Replace:=wdReplaceAll
End With
Next
With .Range.Find
.Text = "(Your card will expire on[!^13]{1,})"
.Replacement.Text = "\1"
.Replacement.Font.Bold = True
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
.Text = "#([0-9]{1,2} [JFMASOND][anuryebchpilgstmov]{2,8} [12][0-9]{3}.)"
.Execute Replace:=wdReplaceAll
End With
With .Characters.First
.Delete
.Delete
End With
End With
Set myRange = Nothing
End Sub