Inserting text and fields in Word 2010 header without using .Select

前端 未结 1 485
不知归路
不知归路 2021-01-23 04:32

I am trying to fix up a Word 2010 page header containing fields for filename, save date and page number as well as some text between each, like so: filename+\" \"+save date+tab+

相关标签:
1条回答
  • 2021-01-23 05:11

    I believe your problem here stems from the fact that you set the myRange variable to the header text which, when empty, is simply the first (empty) character. After you add the Savedate it seems to go out of this original range. You need to add two things to make your code work.

    Firstly, you want to collapse to the end after each insertion but you also need to redefine the header range (myRange variable) to the Header after inserting the SaveDate.

    It's a bit ugly but the following code seems to do what you desire. Note that if I don't put the last wdCollapseEnd in the code it doesn't work.

    Finally, I'd update your fields at the end just so you don't have to manually do it yourself.

    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
    

    End Sub

    0 讨论(0)
提交回复
热议问题