Я хотел бы определить макрос в Microsoft Word 2007, который вставляет оглавление с предоставленными автоматическими стилями при нажатии горячей клавиши. Я успешно определен макрос для вставки (например, основной) таблицы не-стиле содержимого следующим образом:Какой код VBA следует использовать в Microsoft Word 2007 Макро для создания Оглавление
Sub InsertTableOfContents()
'
' InsertTableOfContents Macro
'
'
With ActiveDocument
.TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
True, UseHeadingStyles:=True, UpperHeadingLevel:=1, _
LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _
UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
True
.TablesOfContents(1).TabLeader = wdTabLeaderDots
.TablesOfContents.Format = wdIndexIndent
End With
End Sub
Однако при попытке вставить стилизованную оглавление следующим образом:
Sub InsertStyledTOC()
'
' Macro to insert a table of contents styled like Automatic Table 2
'
ActiveDocument.AttachedTemplate.BuildingBlockEntries("Automatic Table 2"). _
Insert Where:=Selection.Range, RichText:=True
End Sub
Я получаю следующее сообщение об ошибке:
Run-time error 5941 The requested member of the collection does not exist
Я считаю, что это указывает на то, что упоминаемая член BuildingBlockEntries
(например, автоматическая таблица 2) не существует, но я не ясно, почему или как исправить это.
Спасибо за помощь
Edit - я попытался использовать FilePath по умолчанию шаблон Building Blocks приложения, как предложено:
Application.Templates("C:\Program Files\Microsoft Office\Office12\Document Parts\1033\Building Blocks.dotx").BuildingBlockEntries("Automatic Table 2").Insert Where:=Selection.Range _ , RichText:=True
Однако, я все еще получаю ошибку: Run-time error 5941 The requested member of the collection does not exist
Является ли TOC 'Selection.Range'? Так вы просто пытаетесь применить стиль к «Selection.Range»? Знаете ли вы, что такое «BuildingBlockEntries»? (Понятия не имею!). Попробуйте ввести это в ближайшее окно (нажмите Ctrl + G из редактора VBA): 'для i = 1 для активированного документа. AttachedTemplate.buildingblockentries.count: debug.Print activedocument.AttachedTemplate.buildingblockentries (i) .name: next i' – mkingston
Кроме того, попытались ли вы записать макрос, выполнив установку желаемого стиля TOC и проверив код? – mkingston
Приведенный выше код был создан в результате записи макроса, в котором я выбрал оглавление (Автоматическая таблица 2) из меню «Ссылки -> Оглавление». Я еще не пробовал вводить код отладки, поэтому попробую. Извините, новичок в vba и макросах. – Christian