在不使用的情况下在Word 2010页眉中插入文本和字段.选择



我正在尝试修复Word 2010页眉,该页眉包含文件名、保存日期和页码字段,以及每个字段之间的一些文本,例如:filename+"+保存日期+制表符+页码。然而,我似乎无法将琴弦放在正确的位置。到目前为止,我所拥有的是:

Sub CreateHeader()
    Dim myRange As Range
    With ActiveDocument
        Set myRange = .Sections(1).Headers(wdHeaderFooterPrimary).Range
        .Fields.Add Range:=myRange, Type:=wdFieldFileName, PreserveFormatting:=True
        myRange.Collapse wdCollapseEnd
        myRange.InsertAfter (" ")
        myRange.Collapse wdCollapseEnd
        .Fields.Add Range:=myRange, Type:=wdFieldSaveDate, Text:="@ YYYY-MM-DD", PreserveFormatting:=True
        myRange.InsertAfter (Chr(9))
        myRange.Collapse wdCollapseEnd
        .Fields.Add Range:=myRange, Type:=wdFieldPage, PreserveFormatting:=True
    End With
End Sub

然而,在执行了sub之后,不同的部分并不是我想要的。相反,它们显示为文件名+"+选项卡+页码+保存日期。我在这里做错了什么?如果可能的话,我宁愿不使用.Select

(请注意,我最近问了一个类似的问题。)

我相信您在这里的问题源于您将myRange变量设置为标题文本,当标题文本为空时,它只是第一个(空)字符。添加保存日期后,它似乎超出了此原始范围。您需要添加两项内容才能使代码正常工作。

首先,您希望在每次插入后折叠到末尾,但也需要在插入SaveDate后将标头范围(myRange变量)重新定义为header。

它有点难看,但下面的代码似乎可以满足您的要求。请注意,如果我不在代码中放入最后一个wdCollapseEnd,它就不起作用。

最后,我会在最后更新你的字段,这样你就不必自己手动了。

Sub CreateHeader()
    Dim myRange As Range
    With ActiveDocument
        Set myRange = .Sections(1).Headers(wdHeaderFooterPrimary).Range
        .Fields.Add Range:=myRange, Type:=wdFieldFileName, PreserveFormatting:=True
        myRange.Collapse wdCollapseEnd
        myRange.InsertAfter (" ")
        myRange.Collapse wdCollapseEnd
        .Fields.Add Range:=myRange, Type:=wdFieldSaveDate, Text:="@ YYYY-MM-DD", PreserveFormatting:=True
       Set myRange = .Sections(1).Headers(wdHeaderFooterPrimary).Range
       myRange.Collapse wdCollapseEnd
       myRange.InsertAfter (Chr(9))
       myRange.Collapse wdCollapseEnd
       .Fields.Add Range:=myRange, Type:=wdFieldPage, PreserveFormatting:=True
       myRange.Fields.Update
End With

结束子

相关内容

  • 没有找到相关文章

最新更新