#1
|
|||
|
|||
Insert Text at Start of Each Paragraph
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 |
Thread Tools | |
Display Modes | |
|
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 |