Напомню, мы решаем ситуацию, когда данные наших привязок в колонтитуле не видны после выполнения отчета. Первый вариант решения был описан в предыдущем выпуске.
Сейчас расскажу о другом методе макрос для обновления.
Идея решения исходит из того, что если в сформированном отчете, в котором не видно данных по привязке в колонтитуле, сделать вызов отчета на печать (Лента Файл – Печать и вернуться к редактированию документа), то данные привязки мы тут же увидим. Т.е. необходимо сделать предпросмотр печати не вручную, а программно.
Допустим:
у нас открыт шаблон отчета
в колонтитуле вставлена нужная привязка
В окне Word с открытым шаблоном отчета нажимаем Alt+F11 . Это приведет к открытию окна Microsoft Visual Basic for Application.
Слева в окне находим ветку с проектом нашего шаблона отчета и в папке Microsoft Word Objects два раза кликаем по «ThisDocument».
В правой части окна вставляем следующий код:
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
Application.ScreenUpdating = False
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
Application.ScreenUpdating = True
End Sub
Закрываем все ранее открытые окна при этом сохраняем изменения.
Запускаем отчет, смотрим результат.
Плюсы решения:
Реализация решения проще, чем игра со стилями.
Минусы решения:
Выполнение отчета в этом случае будет несколько дольше чем, при игре со стилями. Например, один из моих процессов формируется:
7 секунд – без этого кода,
17 секунд – с этим кодом (т.е. +10 секунд).
Лично я использую этот макрос в том случае, когда кроме полей колонтитула требуется обновлять и другие поля в отчете. Но такое бывает редко.
Практика показывает, что компании среднего размера от 500 до 1000 человек – разрабатывают и внедряют новую систему управления целиком за один год. Компаниям с 10 000 сотрудников потребуется примерно 2-3 года.