是否可以为 Word 2007 中的所有交叉引用指定特定样式?

Dra*_*ake 41 microsoft-office microsoft-word-2007 microsoft-word

没什么可补充的,我想立即更改Word 2007 文档中所有交叉引用的样式。但我不知道该怎么做。如何才能做到这一点?

Den*_*son 46

一些交叉引用类型会自动设置为“强烈引用”样式,但大多数会被设置为“普通”文本格式。

要将“强烈引用”样式应用于交叉引用的文本:

  • 选择文本
  • 选择功能区中的“主页”选项卡
  • 使用功能区“样式”组中的上下按钮或下拉按钮,选择“强烈参考”样式(或其他样式,如果您愿意)

要更改给定样式的所有文本的外观:

  • 选择功能区中的“主页”选项卡
  • 使用功能区“样式”组中的下拉按钮,选择“应用样式...”
  • 在“样式名称”下的“应用样式”对话框中选择要更改的样式的名称(例如“强烈引用”)
  • 单击“修改...”按钮
  • 更改格式以适合您,然后单击“确定”

要一次将样式应用于所有交叉引用:

  • Alt+F9显示域代码
  • 选择功能区中的“主页”选项卡
  • 单击“编辑”组中的“替换”
  • 在“查找内容”字段中,键入 ^19 REF
    • (这是插入符号一九空格 REF)
  • 单击“替换为”字段,但不要输入任何内容
  • 点击“更多”按钮
  • 对话框的底部应标题为“替换”(后面有一条水平线)
  • 单击“格式”按钮并选择“样式...”
  • 选择一种样式(例如“强烈参考”)并单击“确定”
  • 它现在应该显示您在“替换为”字段下选择的样式
  • 如果您感到勇敢,请单击“全部替换”,或者使用“查找下一个”和“替换”来逐步完成并单独替换或跳过每个参考字段代码的样式
  • Alt+F9隐藏域代码

有关查找和替换中特殊代码的更多信息,请参阅此页面

这是一个将开关添加\* mergeformat到每个字段的宏。如果您进行字段更新,此开关对于防止格式丢失是必要的。您可以将宏分配给一次击键,并且每次您按下击键时,它都会一次遍历一个字段。您还可以编辑宏以遍历整个文档以自动执行此过程。

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
Run Code Online (Sandbox Code Playgroud)

  • 哇,我不知道查找/替换的高级用法,非常有帮助 (6认同)
  • 你的回答是浓缩知识的小宝石。值得拥有自己的维基! (6认同)
  • 耶稣基督……这很好用,但问题是:为什么将样式应用于交叉引用如此困难!?;) (5认同)
  • PS:如果我另存为PDF,它会丢失格式 (2认同)

小智 6

  • Alt+F9显示域代码
  • 使用以下宏将 CHARFORMAT 添加到所有交叉引用。仅当字符串不存在时,此宏才会将字符串添加到字段中。

    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
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用这个宏来格式化所有带有“微妙引用”样式的交叉引用(确保你有这样的样式,并显示域代码):

    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
    
    Run Code Online (Sandbox Code Playgroud)
  • Alt+F9隐藏域代码