#1
|
|||
|
|||
Macro to apply a style between quotations
I am trying to create a macro that applies a style to words between quotation marks. The macro should only work for words that are capitalized as well. For example "Definition" would get the style applied to it, but "definition" wouldn't. I've gotten a find and replace to work but only for the first example in a document. I'd like the macro to loop through the entire document. Any help would be greatly appreciated.
Thanks, Sub Demo() Selection.HomeKey Unit:=wdStory With Selection.Find .ClearFormatting .Text = "[^0147][A-Z]" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .MatchWildcards = True .Execute End With If Selection.Find.Found Then Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=1 ' switch on selection extend mode Selection.Extend With Selection.Find .ClearFormatting .Text = "[^0148]" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .MatchWildcards = True .Execute If Selection.Find.Found Then Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.Style = ActiveDocument.Styles("Defined Terms Char") End If End With End If End Sub � |
#2
|
|||
|
|||
Code:
Sub Demo() Dim oRng As Range Set oRng = ActiveDocument.Range With oRng.Find .ClearFormatting .Text = "(^0147)([A-Z]*)([^0148])" .MatchWildcards = True While .Execute oRng.Start = oRng.Start + 1 oRng.End = oRng.End - 1 oRng.Style = ActiveDocument.Styles("Strong") 'replace with your style oRng.Collapse wdCollapseEnd Wend End With lbl_Exit: Exit Sub End Sub |
#3
|
|||
|
|||
Thanks. It works with the strong style but when I add my style into the macro it applies to the entire paragraph. Could there be some setting in my Style causing it to do that?
EDIT: Nevermind! I figured out the issue with my Style. Thanks again Last edited by WVA; 07-29-2019 at 06:35 AM. Reason: Fixed |
#4
|
|||
|
|||
Yes. Your style needs to be a character style (not paragraph).
|
#5
|
|||
|
|||
I've been using this same macro to try to change a style for the first sentence of each paragraph. However, because I have a ^13 wildcard in the find, the macro only works if the paragraph before is in the same style. I'd like for it to change the style for the first sentence of a paragraph but starting after the ^13.
Here is my macro so far: Sub Demo() Dim aRng As Range Set aRng = ActiveDocument.Range With aRng.Find .ClearFormatting .Text = "(^13)(*)(.)" .MatchWildcards = True .Style = ActiveDocument.Styles("Heading 2") While .Execute aRng.Start = aRng.Start + 1 aRng.End = aRng.End - 1 aRng.Style = ActiveDocument.Styles("Heading 2 Title Char") aRng.Collapse wdCollapseEnd Wend End With End Sub |
#6
|
|||
|
|||
You might try:
Code:
Sub Demo() Dim oRng As Range Dim oRngDup As Range Set oRng = ActiveDocument.Range With oRng.Find .ClearFormatting .Style = ActiveDocument.Styles("Heading 2") Do While .Execute Set oRngDup = oRng.Duplicate oRngDup.Collapse wdCollapseStart oRngDup.MoveEndUntil ".", wdForward oRngDup.End = oRngDup.End + 1 oRngDup.Style = ActiveDocument.Styles("Strong") oRng.Collapse wdCollapseEnd If oRng.End + 1 = ActiveDocument.Range.End Then Exit Do Loop End With End Sub |
#7
|
|||
|
|||
This worked well except I don't like it applying to the period at the end of the sentence. I added an extra line after oRngDup.End = oRngDup.End + 1 but switched the + to a -. Now it's perfect.
Thanks again for the help! |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
My style keeps changing, can't get saved style to apply | Meenie50 | Word | 7 | 07-20-2017 03:47 PM |
Apply Heading Style When Combining Documents | snot369 | Word | 1 | 01-13-2017 11:04 AM |
Is it possible to have a style apply two formats based upon text? | DMcCollum | Word | 3 | 05-02-2015 06:29 PM |
Can I apply a style to an image? | humbleosity | Word | 1 | 01-14-2014 09:38 AM |
Macro to apply style to selected tables | ubns | Word | 1 | 08-02-2012 04:09 AM |