Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:creating_user_reports:use_macros_in_reports:examples:contents_update [2018/04/09 15:24]
ru:creating_user_reports:use_macros_in_reports:examples:contents_update [2018/04/09 15:33] (текущий)
Строка 1: Строка 1:
 +====== Обновление Оглавления ======
 +
 +===== Текущая ситуация =====
 +
 +В шаблоне отчета стандартными средствами может быть вставлено Оглавление - содержание документа с указанием разделов и их страниц. При обработке документа макросом может возникнуть смещение заголовков с исходных страниц. Данные о номерах страниц в Оглавлении останутся не обновлёнными сразу после формирования отчета.
 +
 +===== Постановка задачи =====
 +
 +Необходимо, чтобы после выполнения макроса Оглавление в документе полностью соответствовало  истинному положению заголовков на страницах.
 +
 +===== Исходные данные =====
 +
 +Решение описывается с момента, когда уже есть некоторый отчет со своим макросом. В шаблоне отчета задано Оглавление.
 +
 +[{{ ru:creating_user_reports:use_macros_in_reports:contents_update:contents1.png?nolink |Рисунок 1. Вид Оглавления в шаблоне отчета}}]
 +
 +===== Концепция решения =====
 +
 +Вместо того чтобы обновлять существующее Оглавление, в конце выполнения макроса сделаем добавление Оглавления в указанное место в документе. Имеющееся же Оглавление в шаблоне отчета удаляем.
 +
 +===== Шаги решения =====
 +
 +Перед местом вставки Оглавления вставляем закладку с названием "Оглавление".
 +
 +Удаляем текущее поле вставки Оглавления.
 +
 +[{{ ru:creating_user_reports:use_macros_in_reports:contents_update: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:contents3.png?nolink |Рисунок 3. Вид Оглавления сформированного отчета}}]
 +
 +
 +
 +
 +
 +[<contextnavigator>]
 +
  
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki