![]() |
|
#1
|
||||
|
||||
|
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.
|
|
|
|
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 |