![]() |
|
#1
|
|||
|
|||
|
I discovered the following code (from a March 31, 2015 thread) while exploring this forum, and it has been very helpful to say the least. I was wondering, though, how to modify it to include multiple styles (if that is even possible). Currently, I have one macro calling on another, calling on another, and on and on.
Thank you in advance for considering my request for help. Code:
Sub MarkBodyText()
' Author: A. Lockton (a/k/a Guessed) via msofficeforums.com
' Date: April 2015
' Notes: Adds "(XX)" at start of every para styled as specified
Application.ScreenUpdating = False
WithActiveDocument.Content.Find
.ClearFormatting
.Style = "Body Text" 'Changestyle, here
DoWhile .Execute(Forward:=True, Format:=True) = True
With .Parent
If Left(.Text, 1) = vbCr Or Left(.Text, 1) = " " Or Left(.Text, 1) = chr(12) Then
'do nothing
Else
.InsertBefore "(XX) "
End If
If .End = ActiveDocument.Content.End Then
Exit Do
Else
.Move Unit:=wdParagraph, Count:=1
End If
End With
Loop
EndWith
Application.ScreenUpdating = True
End Sub
Last edited by macropod; 04-15-2021 at 02:53 PM. Reason: Cleaned up post formatting and added code tags |
|
#2
|
|||
|
|||
|
When and where do you want to be changing the style? How will Word know which style you want where?
|
|
#3
|
||||
|
||||
|
Assuming each additional style is being treated exactly the same way, I would add an array of the target style names and loop it like this
Code:
Sub MarkBodyText()
' Author: A. Lockton (a/k/a Guessed) via msofficeforums.com
' Date: April 2021
' Notes: Adds "(XX)" at start of everypara styled as specified
Dim arrStyles() As String, i As Integer
arrStyles = Split("Body Text|Heading 1|Heading 2", "|") 'list of style names
Application.ScreenUpdating = False
For i = LBound(arrStyles) To UBound(arrStyles)
With ActiveDocument.Content.Find
.ClearFormatting
.Style = arrStyles(i)
Do While .Execute(Forward:=True, Format:=True) = True
With .Parent
If Left(.Text, 1) = vbCr Or Left(.Text, 1) = " " Or Left(.Text, 1) = Chr(12) Then
'do nothing
Else
.InsertBefore "(XX) "
End If
If .End = ActiveDocument.Content.End Then
Exit Do
Else
.Move Unit:=wdParagraph, Count:=1
End If
End With
Loop
End With
Next i
Application.ScreenUpdating = True
End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia Last edited by Charles Kenyon; 04-16-2021 at 01:21 AM. |
|
#4
|
|||
|
|||
|
Hey, Charles.
Thank you for getting back to me. The styles (a standard set used repeatedly) are in the document, itself (not in the normal.dot file). |
|
#5
|
|||
|
|||
|
Andrew,
Thank you for adjusting/rewriting the code for me. I will give it a whirl and let you know. Thank you, again! |
|
#6
|
|||
|
|||
|
Andrew,
The code modification works beautifully. It also reduces about a dozen separate macros to one. I appreciate it very much. Thank you, again! JB |
|
| Tags |
| add text, all paragraphs, search styles |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Word macro to insert text at the beginning of paragraph but skip tables
|
ashalles135 | Word VBA | 5 | 09-26-2018 09:49 AM |
word macro To insert text at the beginning and at end of paragraph
|
ArieH | Word VBA | 20 | 09-10-2017 04:23 PM |
Macro to Insert text into the beginning on specific paragraphs unless the paragraph is blank
|
caboy | Word VBA | 2 | 04-01-2015 07:00 AM |
| How to find all numbers that start with a paragraph? | csongi12xme | Word | 7 | 07-22-2014 07:55 AM |
| Justify Paragraph Start position with VBA | jeff_kaufman | Word VBA | 2 | 11-09-2013 12:15 PM |