我正在寻找一种方法,以编程方式将当前部分的标题添加到word文档中每个页面的标题中。我发现this page解释了如何访问和修改标头。阅读此链接后我的理解是,要在每个页面上添加不同的内容,您需要添加正确的字段。现在我一直在寻找这个领域而没有成功。 This other page提供了一个字段列表,wdFieldSection
看起来非常有前景,但它在我的文档中没有用(它在每页上添加了#34; 1")。
答案 0 :(得分:2)
实现此目的的直接(和推荐)方法是在标题中使用STYLEREF字段,该字段指向用于格式化节标题的样式。
为您提供更大灵活性的另一个选项是为相应内容添加交叉引用。下面的示例在节标题周围添加(隐藏)书签,然后在标题中添加对该书签的交叉引用(如果您需要相应调整的第一页/偶数页/奇数页的任何特定标题):
Sub AddSectionTitlesToHeader()
Dim oSection As Section
For Each oSection In ActiveDocument.Sections
Dim oRangeTitle As Range
Dim oRangeHeader As Range
Dim bmName As String
' make sure to use a different header for each section
oSection.PageSetup.DifferentFirstPageHeaderFooter = False
oSection.PageSetup.OddAndEvenPagesHeaderFooter = False
oSection.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
' add a bookmark around the section title
' (this assumes the title is in the section's
' first paragraph, adjust accordingly)
Set oRangeTitle = oSection.Range.Paragraphs.First.Range
bmName = "_bmSectionTitle" & oSection.Index
oRangeTitle.Bookmarks.Add bmName, oRangeTitle
' add a cross reference in the header
Set oRangeHeader = oSection.Headers(wdHeaderFooterPrimary).Range
oRangeHeader.InsertCrossReference _
ReferenceType:=WdReferenceType.wdRefTypeBookmark, _
ReferenceKind:=WdReferenceKind.wdContentText, _
ReferenceItem:=bmName
Next
End Sub