Is it possible to assign a specific style to all cross-references in Word 2007?

73,329

Solution 1

Some cross-reference types are automatically formatted with the "intense reference" style, but most are formatted as "normal" text.

To apply the "intense reference" style to the text of the cross reference:

  • select the text
  • choose the "Home" tab in the ribbon
  • using either the up-down buttons or the drop-down button in the "Styles" group of the ribbon, choose the "intense reference" style (or another style if you prefer)

To change the appearance of all text of a given style:

  • choose the "Home" tab in the ribbon
  • using the drop-down button in the "Styles" group of the ribbon, choose "Apply styles..."
  • in the "Apply Styles" dialog box under "Style Name" choose the name of the style you want to change (e.g. "intense reference")
  • Click the "Modify..." button
  • Change the formatting to suit you and click "OK"

To apply a style to all cross references at once:

  • Press Alt+F9 to show field codes
  • Select the "Home" tab in the ribbon
  • Click on "Replace" in the "Editing" group
  • In the "Find what" field, type ^19 REF
    • (That's caret-one-nine-space-R-E-F)
  • Click in the "Replace with" field, but don't type anything
  • Click the "More" button
  • The bottom section of the dialog should be titled "Replace" (with a horizontal rule after it)
  • Click the "Format" button and select "Style..."
  • Choose a style (e.g. "Intense Reference") and click OK
  • It should now show the style you selected under the "Replace with" field
  • Click "Replace All" if you're feeling brave or use "Find Next" and "Replace" to step through and replace or skip each reference field code's style individually
  • Press Alt+F9 to hide field codes

See this page for more information on special codes in Find and Replace.

Here is a macro that will add the switch \* mergeformat to each of the fields. This switch is necessary to keep the formatting from being lost if you do a field update. You can assign the macro to a keystroke and it will step through the fields one at a time for each time you press the keystroke. You can also edit the macro to loop over the whole document to automate the process.

Sub mf()
'
' mf Macro
' Find cross references and add \* mergeformat
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^19 REF"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="\* mergeformat "
    Selection.Find.Execute
End Sub

Solution 2

  • Press Alt+F9 to show field codes
  • Use the following macro to add CHARFORMAT to all cross references. This macro adds the string to the field only if it's not already there.

    Sub SetCHARFORMAT()
    '
    ' Set CHARFORMAT switch to all {REF} fields. Replace MERGEFORMAT.
    '
    '
        Dim oField As Field
        Dim oRng As Range
        For Each oField In ActiveDocument.Fields
        'For Each oField In Selection.Fields
            If InStr(1, oField.Code, "REF ") = 2 Then
                If InStr(1, oField.Code, "MERGEFORMAT") <> 0 Then
                    oField.Code.Text = Replace(oField.Code.Text, "MERGEFORMAT", "CHARFORMAT")
                End If
                If InStr(1, oField.Code, "CHARFORMAT") = 0 Then
                    oField.Code.Text = oField.Code.Text + "\* CHARFORMAT "
                End If
            End If
        Next oField
    
    
    End Sub
    
  • Use this macro to format all cross references with the "Subtle Reference" style (make sure you have such a style, and that field codes are shown):

    Sub SetCrossRefStyle()
    '
    ' Macro to set styole of all cross references to "Subtle Reference"
    '
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Style = ActiveDocument.Styles( _
            "Subtle Reference")
        With Selection.Find
            .Text = "^19 REF"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchKashida = False
            .MatchDiacritics = False
            .MatchAlefHamza = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    
  • Press Alt+F9 to hide field codes

Solution 3

editing the macro uploaded by the cyborg, we can easily automate showing and hiding the field codes. so that every time we wish to update we do not have to use toggle field codes. I used following code to add field code toggle.

ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

The complete macro is as follows:

Sub SetCrossRefStyle()
'
' Macro to set styole of all cross references to "Subtle Reference"
'
'
ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles( _
    "Subtle Reference")
With Selection.Find
    .Text = "^19 REF"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
End Sub

This is the first time I am using macros to speed up my work in word. thanks cyborg for such helpful macro.

Share:
73,329

Related videos on Youtube

Drake
Author by

Drake

CTO and Co-Founder of Crazy Web Studio Co.,Ltd., a web development company based in Phuket, Thailand, specialized in Web Design, SEO, Media Marketing and Custom Web Development. Former Software Architect at Electrolux with more than 15 years experience in designing, developing and testing Microsoft .NET Based Enterprise Applications.

Updated on September 17, 2022

Comments

  • Drake
    Drake almost 2 years

    Nothing more to add, I would like to change the style of all cross-references I have in a Word 2007 document at once. But I have no idea how to do it. How can this be done?

    • Ivo Flipse
      Ivo Flipse almost 15 years
      Good question, I couldn't find anything quick and dirty. But I think it's related to the style of the entire document
    • Drake
      Drake almost 15 years
      @Ivo, yes I thinks too that is something related to the style of the document, but I am a poor SW developer with no much experience with Word :)
    • Dennis Williamson
      Dennis Williamson almost 15 years
      @marco: see my updated answer
    • Drake
      Drake almost 15 years
      yeah, great answer thanks a lot, very very interesting
  • Drake
    Drake almost 15 years
    in fact most references if not all are create by default with normal text. Thank you for the answer, but in this case I have to set manually the style of each one before I can update the style for all at once. I was searching for a method that can automatize the first step of the process
  • Drake
    Drake almost 15 years
    wow, i didn't know this advanced uses of find/replace, very helpful
  • Grimace of Despair
    Grimace of Despair almost 11 years
    You answer is a little gem of condensed knowledge. Worth its own wiki!
  • Michael
    Michael over 6 years
    on MS Word 16.9.1 on Mac, this works (didn't try the macro), but the find/replace is not on the home ribbon (I think?), but instead in the menu under Edit->Find->Advanced Find and Replace...
  • JinSnow
    JinSnow almost 6 years
    1/ If it doesn't work check if you did not confuse Intense Reference with Intense Emphasis 2/ For the macro that loop through the whole document and apply the (new) style to all cross-ref see "Jaykrushna patel" answer below
  • JinSnow
    JinSnow almost 6 years
    @Dennis it works for the heading text but the style doesn't apply to the page number, any idea how to do that?
  • Dennis Williamson
    Dennis Williamson almost 6 years
    @JinSnow: Sorry, no.
  • David Brossard
    David Brossard over 5 years
    This is brilliant. Just what I was looking for. Works like a charm in Word (MS Office 365 Business) version 1812
  • David Brossard
    David Brossard over 5 years
    PS: if I save as PDF, it loses the formatting
  • Dennis Williamson
    Dennis Williamson over 5 years
    @DavidBrossard: What happens if you print to PDF instead of save as PDF?
  • David Brossard
    David Brossard over 5 years
    I thought of that :-) The same sadly...
  • winklerrr
    winklerrr over 2 years
    This changes not only the references but all the other normal text as well. And I don't want my whole document to be blue and underlined.