插入目录在第2页

时间:2018-06-05 20:11:58

标签: vba ms-word word-vba

我需要创建一个目录,该目录存在于第2页的顶部。在我的代码中,我正在导入自定义标题页面(构建块),还必须根据文本中的文本创建目录。文献。目录工作/运行完美,它位于错误的位置。

    Sub TitlePage()
    Application.Templates( _
        mypath). _
        BuildingBlockEntries("BuildingBlockName").Insert Where:=Selection.Range, RichText:=True
End Sub
Sub ToC()
Selection.GoTo what:=wdGoToLine, Which:=wdGoToAbsolute
Selection.EscapeKey
Selection.Range.InsertBreak
Selection.GoTo what:=wdGoToPage, Which:=wdGoToNext
Selection.EscapeKey
ActiveDocument.TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
     True, UseHeadingStyles:=True, IncludePageNumbers:=True, _
     UseHyperlinks:=True, HidePageNumbersInWeb _
     :=True, UseOutlineLevels:=False
End Sub

如您所见,这些是两个不同的宏,它们是较大宏的一部分。我在代码的主要部分使用调用函数来保持组织有序。有没有办法将目录固定到第2页?

P.S。我知道我犯了使用选择属性的罪。这是导航到第一行,然后导航到第二页,然后转义选择,并插入光标最后的ToC。  我很绝望。

1 个答案:

答案 0 :(得分:1)

基于以下内容的方法:

Sub ToCAndTitle()
With ActiveDocument
  'Insert a Section break before existing content
  .Range(0, 0).InsertBreak Type:=wdSectionBreakNextPage
  .TablesOfContents.Add Range:=.Range(0, 0), RightAlignPageNumbers:=True, _
     UseHeadingStyles:=True, IncludePageNumbers:=True, UseHyperlinks:=True, _
     HidePageNumbersInWeb:=True, UseOutlineLevels:=False
  'Insert a page break before existing content
  .Range(0, 0).InsertBreak Type:=wdPageBreak
  Application.Templates(mypath).BuildingBlockEntries("BuildingBlockName").Insert Where:=.Range(0, 0), RichText:=True
End With
End Sub

插入分节符允许页面编号在TOC之后开始,如果这是你想要的。