【问题标题】:Insert two fields in Word 2010 page header using VBA使用 VBA 在 Word 2010 页眉中插入两个字段
【发布时间】:2026-01-18 04:20:01
【问题描述】:

我正在尝试在页眉中插入两个字段。我可以在当前选择中插入它们(参见下面的代码),但我不希望在插入字段之前不必选择页眉。这个可以吗?

Sub insertFields()
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="DOCPROPERTY LastSavedTime ", PreserveFormatting:=True
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="FileName", PreserveFormatting:=True
End Sub

【问题讨论】:

    标签: vba header field word-2010


    【解决方案1】:

    如果您指定要放置字段的文档部分以及标题类型(wdHeaderFooterPrimarywdHeaderFooterFirstPagewdHeaderFooterEvenPages),则可以使用此代码:

    Dim myRange As Range
    Set myRange = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
    ActiveDocument.Fields.Add Range:=myRange, Type:=wdFieldEmpty, Text:="DOCPROPERTY LastSavedTime ", PreserveFormatting:=True
    

    回应评论的附加信息

    您可以使用Collapse 方法(将插入点放置在范围的开始或结束位置)在标题中插入多个字段。添加适当的附加代码以插入空格、格式或回车:

    myRange.Collapse wdCollapseEnd
    ActiveDocument.Fields.Add Range:=myRange, Type:=wdFieldEmpty, Text:="FileName", PreserveFormatting:=True
    

    【讨论】:

    • 这给了我 一个 字段。但是,复制第二行确实 not 给了我第二个字段。当然,这必须是可能的。
    • 请查看我添加的关于Collapse 方法的附加信息。
    • 下面的代码似乎根本没有添加文本“hi”。尝试不同的行顺序会在标题的开头或结尾给出文本“hi”。但绝不是它应该在的地方,在田野的中间。 Set myRange = s.Headers(wdHeaderFooterPrimary).Range : ActiveDocument.Fields.Add Range:=myRange, Type:=wdFieldEmpty, Text:="PAGE", PreserveFormatting:=True : myRange.Collapse wdCollapseEnd : myRange.Text = " hi " : ActiveDocument.Fields.Add Range:=myRange, Type:=wdFieldEmpty, Text:="FILENAME", PreserveFormatting:=True
    • @FredrikP,让我们回顾一下你的行为。您发布了一个关于在标题中插入字段的问题。我回答了。您要求提供更多信息。我提供了它。您将我的答案标记为正确并留下评论感谢我。然后,您删除了您的评论,取消了我的回答正确的复选标记,随后,在您上面的评论中,提出了一个完全不同(且不清楚)的问题,即如何在字段内或字段之间的范围内插入文本。这不是堆栈溢出的工作方式。如果您的问题得到解答,请将其标记为正确,然后发布新问题。
    • 很抱歉。我是新来的。我已将问题再次标记为已回答。目前将发布一个新问题。