Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:creating_user_reports:use_macros_in_reports:examples:contents_update [2020/07/03 15:16] 127.0.0.1 внешнее изменение |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Обновление Оглавления ====== | ||
- | |||
- | ===== Текущая ситуация ===== | ||
- | |||
- | В шаблоне отчета стандартными средствами может быть вставлено Оглавление - содержание документа с указанием разделов и их страниц. При обработке документа макросом может возникнуть смещение заголовков с исходных страниц. Данные о номерах страниц в Оглавлении останутся не обновлёнными сразу после формирования отчета. | ||
- | |||
- | ===== Постановка задачи ===== | ||
- | |||
- | Необходимо, чтобы после выполнения макроса Оглавление в документе полностью соответствовало истинному положению заголовков на страницах. | ||
- | |||
- | ===== Исходные данные ===== | ||
- | |||
- | Решение описывается с момента, когда уже есть некоторый отчет со своим макросом. В шаблоне отчета задано Оглавление. | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:contents_update:lang_contents1.png?nolink |Рисунок 1. Вид Оглавления в шаблоне отчета}}] | ||
- | |||
- | ===== Концепция решения ===== | ||
- | |||
- | Вместо того чтобы обновлять существующее Оглавление, в конце выполнения макроса сделаем добавление Оглавления в указанное место в документе. Имеющееся же Оглавление в шаблоне отчета удаляем. | ||
- | |||
- | ===== Шаги решения ===== | ||
- | |||
- | Перед местом вставки Оглавления вставляем закладку с названием "Оглавление". | ||
- | |||
- | Удаляем текущее поле вставки Оглавления. | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:contents_update:lang_contents2.png?nolink |Рисунок 2. Вид места вставки Оглавления}}] | ||
- | |||
- | <code> | ||
- | Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) | ||
- | |||
- | 'Вводная часть | ||
- | |||
- | ContentsBkmName = "Оглавление" 'Название закладки, определяющее место вставки | ||
- | |||
- | |||
- | 'Код другой части макроса | ||
- | |||
- | 'Процедурная часть | ||
- | |||
- | |||
- | 'Код другой части макроса | ||
- | |||
- | |||
- | 'ВСТАВКА ОГЛАВЛЕНИЯ В КОНЦЕ МАКРОСА | ||
- | |||
- | 'Переходим к подготовленной закладке | ||
- | Selection.GoTo What:=wdGoToBookmark, Name:=ContentsBkmName | ||
- | |||
- | 'Непосредственное добавление Оглавления | ||
- | 'Уровень Заголовков 1 и 2 | ||
- | With ActiveDocument | ||
- | .TablesOfContents.Add _ | ||
- | Range:=Selection.Range, _ | ||
- | RightAlignPageNumbers:=True, _ | ||
- | UseHeadingStyles:=True, _ | ||
- | UpperHeadingLevel:=1, _ | ||
- | LowerHeadingLevel:=2, _ | ||
- | IncludePageNumbers:=True, _ | ||
- | AddedStyles:="", _ | ||
- | UseHyperlinks:=True, _ | ||
- | HidePageNumbersInWeb:=True, _ | ||
- | UseOutlineLevels:=True | ||
- | .TablesOfContents(1).TabLeader = wdTabLeaderDots | ||
- | .TablesOfContents.Format = wdIndexIndent | ||
- | End With | ||
- | |||
- | End Sub | ||
- | |||
- | </code> | ||
- | |||
- | ===== Результат ===== | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:contents_update:lang_contents3.png?nolink |Рисунок 3. Вид Оглавления сформированного отчета}}] | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | [<contextnavigator>] | ||
- | |||