2013-06-17 3 views
1

В моем документе используются стили Заголовок 1 и Заголовок 2, а также MyHead1, MyHead2. Я хочу создать оглавление только с записями MyHead1 и MyHead2. Я могу сделать это из меню с помощью опций в оглавлении и удалить уровни TOC из стилей Heading1 и Heading 2.word содержание

Я хочу сделать это в 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 

Тем не менее, в результате ТОС включает в себя рубрику 1 и Заголовок 2 записей.

Я ожидал, что UseHeadingStyles:=False исключает встроенные стили заголовков, но это не так. Как их исключить?

ответ

0

Я бы ожидал UseHeadingStyles:=False, чтобы их исключить. Если вручную вставить TableofContents, а затем выбрать всю таблицу и щелкните правой кнопкой мыши и «Коды Переключает поле» вы увидите текст кода поля для вставленного ТОС как:

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 

Для полного списка кода поля переключателей для ТОС смотрите здесь: http://office.microsoft.com/en-au/word-help/field-codes-toc-table-of-contents-field-HP005186201.aspx

+0

Спасибо. Похоже, что UseHeadingStyles не работает, это ошибка. Я буду использовать Fields.Add, как вы предлагаете. –

+0

Это имеет смысл. Если бы мой ответ помог вам, не могли бы вы принять ответ? :) См. Http://stackoverflow.com/help/accepted-answer – CuberChase

Смежные вопросы