2

ファイル名、保存日、ページ番号のフィールドと、それぞれの間にあるテキストを含むWord 2010ページヘッダーを修正しようとしています。たとえば、filename + "" + save date + tab +pagenumberです。しかし、文字列を適切な場所に配置できないようです。私がこれまでに持っているのはこれです:

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

しかし、サブを実行した後、異なる部分は私が意図したものではありませんでした。代わりに、ファイル名+""+タブ+ページ番号+保存日として表示されます。私はここで何が間違っているのですか?可能であれば、に頼らないほうがいいと思い.Selectます。

(私は最近同様の質問をしたことに注意してください。)

4

1 に答える 1

2

ここでの問題はmyRange、空の場合は単に最初の (空の) 文字であるヘッダー テキストに変数を設定したという事実に起因していると思います。Savedate を追加すると、この元の範囲から外れるように見えます。コードを機能させるには、2 つのことを追加する必要があります。

まず、各挿入後に最後まで折りたたむ必要がありますがmyRange、SaveDate を挿入した後、ヘッダー範囲 (変数) をヘッダーに再定義する必要もあります。

少し醜いですが、次のコードはあなたが望むことをしているようです。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

サブ終了

于 2013-02-07T11:41:15.307 に答える