单词目录

时间:2013-06-17 23:00:08

标签: ms-word word-vba tableofcontents

我的文档使用样式标题1和标题2以及MyHead1,MyHead2。我想创建一个只有MyHead1和MyHead2条目的目录。我可以使用目录中的选项从菜单中执行此操作,并从Heading1和Heading 2样式中删除TOC级别。

我想在VBA中这样做。我尝试过使用录制的宏:

With ActiveDocument
    .TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
        True, UseHeadingStyles:=False, IncludePageNumbers:=True, AddedStyles _
        :="MyHead1,1,MyHead2,2", UseHyperlinks:=True, HidePageNumbersInWeb _
        :=True, UseOutlineLevels:=False
    .TablesOfContents(1).TabLeader = wdTabLeaderDots
    .TablesOfContents.Format = wdIndexIndent
End With

但是,结果TOC包括标题1和标题2条目。

我希望UseHeadingStyles:=False排除内置标题样式,但事实并非如此。如何排除它们?

1 个答案:

答案 0 :(得分:0)

我原本希望UseHeadingStyles:=False也排除它们。如果手动插入TableofContents然后选择整个表并右键单击并“切换字段代码”,您将看到插入的TOC的字段代码文本为:

TOC \o "1-9" \h \z \u \t "MyHead1,1,MyHead2,2"

此处的\o "1-9"标志代表标题样式,如果省略,则会留下您想要的TOC。因此,不是使用您已经获得的代码插入TOC,而是替代方法。插入后,您仍然可以使用ActiveDocument.TableOfContents(1)选择它。

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, PreserveFormatting:=False
Selection.Text = "TOC \h \z \t " & """" & "MyHead1,1,MyHead2,2" & """"
Selection.Fields.Update

有关TOC的完整字段代码开关列表,请参阅此处:http://office.microsoft.com/en-au/word-help/field-codes-toc-table-of-contents-field-HP005186201.aspx