#1
|
||||
|
||||
Enclose All Instances of a Specific Custom Style in Brackets
Hi folks
I've been tinkering with the VBA code below which encloses curly brackets (parentheses) around selected text but am looking for a way to apply this method automatically to every paragraph in a document which is formatted with a specific custom style (let's call it "Custom Style"). Secondly, I then want to do the reverse (which can be a separate macro), i.e. remove left and right curly brackets from the beginning and end of "Custom Style" paragraphs). Quote:
|
#2
|
||||
|
||||
Stage one macro might work along these lines
Code:
Sub DamnBrackets() Dim aPar As Paragraph, aRng As Range For Each aPar In ActiveDocument.Paragraphs If aPar.Style = "Normal" Then Set aRng = aPar.Range Do While Left(aRng.Text, 1) = " " aRng.MoveStart Unit:=wdCharacter, Count:=1 Loop Do While Right(aRng.Text, 1) = vbCr Or Right(aRng.Text, 1) = " " aRng.MoveEnd Unit:=wdCharacter, Count:=-1 Loop If Len(aRng.Text) > 0 Then aRng.InsertAfter ")" aRng.InsertBefore "(" End If End If Next aPar End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
||||
|
||||
Thanks, Andrew, that worked a treat.
I'm finding the second part a bit tricky. I've got as far as the code below which only removes the first instance of a "(" from the relevant paragraph style, then stops. I couldn't get a standard find/replace to work - it just left all the brackets in place. Quote:
|
#4
|
||||
|
||||
UPDATE:
Sorry, I made some obvious minor errors with the above code. Here's my own tweaking which now works. However, it's a bit clunky as it repeats identical blocks of code to remove the "(" and ")" characters. Is there any way of slimming it down? Quote:
|
#5
|
||||
|
||||
This gets rid of EVERY bracket in that style - including ones that the earlier macro didn't put in.
Code:
Sub RemoveBracketsUPDATED() With Selection.Find .ClearFormatting .Style = ActiveDocument.Styles("Normal") .Text = "[\(\)]{1}" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .Format = True .Execute Replace:=wdReplaceAll End With End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#6
|
||||
|
||||
Thanks, Andrew. I've got this all working great now.
For reference, how would I adapt the above code to remove every bracket from, say, three specific custom styles (rather than just one)? I tried a few methods but couldn't get anything to work. I might need to do this in the future. |
#7
|
||||
|
||||
The two macros work on different principles so it is more efficient to do this in different ways for the two macros. Adding the brackets is quite slow because it steps through every paragraph in the document and you wouldn't want to do that 3 times. Removing them is much faster as the search is a more efficient way of finding a style so it can afford to repeat the process three times.
Code:
Sub DamnBrackets() Dim aPar As Paragraph, aRng As Range, sty As String For Each aPar In ActiveDocument.Paragraphs sty = aPar.Style If sty = "Normal" Or sty = "AbNormal" Or sty = "Heading 1" Then Set aRng = aPar.Range Do While Left(aRng.Text, 1) = " " aRng.MoveStart Unit:=wdCharacter, Count:=1 Loop Do While Right(aRng.Text, 1) = vbCr Or Right(aRng.Text, 1) = " " aRng.MoveEnd Unit:=wdCharacter, Count:=-1 Loop If Len(aRng.Text) > 0 Then aRng.InsertAfter ")" aRng.InsertBefore "(" End If End If Next aPar End Sub Sub RemoveBrackets() Dim arrSty() As String, i As Integer arrSty = Split("Normal|AbNormal|Heading 1", "|") For i = LBound(arrSty) To UBound(arrSty) With Selection.Find .ClearFormatting .Style = ActiveDocument.Styles(arrSty(i)) .Text = "[\(\)]{1}" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .Format = True .Execute Replace:=wdReplaceAll End With Next i End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#8
|
||||
|
||||
That's great, Andrew, thanks.
|
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
find and delet all text within brackets and the brackets themselves | wrdy | Word | 2 | 08-03-2017 06:55 PM |
Word forces use of a specific style | C_Hawk1996 | Word | 1 | 04-13-2016 05:35 AM |
How to set the left indent in a specific style. | OfficeBoy95 | Word | 2 | 05-12-2014 06:31 PM |
How do I add a custom style to tab button? | kennethc | Word | 1 | 04-11-2014 05:25 PM |
How to set style automatically for specific texts | ragesz | Word | 2 | 07-25-2013 07:08 AM |