|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
VBA Code to search for field codes with certain text before the Field code and to change style
VBA Code to search for field codes with certain text before the Field code and to change style... In text with field code I have " This Section { REF Sect_Stuff } applies to blah blah." I wondered what code would be needed to find all the field codes in the doc with the word "Section" before it? "Section" not being part of the field code. And how to change the style of a field code? Thank You |
#2
|
||||
|
||||
You could toggle Word's field code display 'on' (e.g. via Alt-F9) then use:
Find = Section ^d However, any formatting changes would be applied to the entire 'found' expression, not just to the field code. Furthermore, the correct way to reformat the field in such cases is via the addition of a Charformat switch and applying the formatting to the first letter in the field code, thus: { REF Sect_Stuff \* Charformat} (to apply bold, red, formatting - Character Styles can also be used). If you have a great many of these to do, a macro might be called for.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thank you for your help. I do need a macro. I'm sorry I wasn't clear, that is the code I am looking for. I want to search the entire document for any occurrences of the word section followed by a field code. I then want to change the style of the field code only by incorporating the style change to the first character (R) and add the *\Charformat to the end of the field. Then proceed to the next occurrence. I don't want it to change the style of the word section or find the word section that isn't followed by a field code.
Can you please help? |
#4
|
|||
|
|||
Code:
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey Dim oFld As Word.Field Dim oRng As Range For Each oFld In ActiveDocument.Fields Set oRng = oFld.Code.Words.First.Previous.Previous oRng.MoveStart wdWord, -1 If oRng.Text = "Section" Then oFld.Code.Text = oFld.Code.Text & " \* Charformat" oFld.Code.Characters(2).Font.Bold = True oFld.Update End If Next lbl_Exit: Exit Sub End Sub |
#5
|
||||
|
||||
Greg's posted one way, here's another:
Code:
Sub Demo() Application.ScreenUpdating = False ActiveWindow.View.ShowFieldCodes = True With ActiveDocument.Range With .Find .ClearFormatting .Replacement.ClearFormatting .Text = "Section ^d" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute End With Do While .Find.Found With .Fields(1) With .Code If InStr(.Text, "Mergeformat") > 0 Then .Text = Replace(.Text, "Mergeformat", "Charformat") ElseIf InStr(.Text, "Charformat") = 0 Then .InsertAfter " \* Charformat" End If .Words.First.Next.Style = "Emphasis" End With .Update End With .Collapse wdCollapseEnd .Find.Execute Loop End With ActiveWindow.View.ShowFieldCodes = False Application.ScreenUpdating = True End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
VBA Code to Insert Legacy Text Field | PSSMargaret | Word VBA | 17 | 06-15-2016 04:22 AM |
Variable text field code based on occurrences on each page | Cosmo | Word | 2 | 12-29-2015 11:54 AM |
Macro to select an { includepicture } field code and format the picture behind text and 100% scale | sanpedro | Word VBA | 3 | 03-30-2015 10:50 PM |
need an arbitrary field code | ajetrumpet | Word | 1 | 07-15-2013 04:58 PM |
field code question | bordercollie10 | Mail Merge | 3 | 10-15-2009 07:55 AM |