Думаю, что предложенные в предыдущих частях материала примеры дают представление о режимах управления Input и Output файлами последовательного доступа. Но помимо получения данных в приложение пользователь должен иметь возможность оперировать ими в конкретном документе. Как распорядиться имеющимися данными в диалоговых формах, разработчик должен определиться сам (понимаем: написать программный код, исходя из формы, стиля документа или Шаблона).
Решения могут быть различными, например:
помещать в нужный параграф Word’овского документа;
заполнять таблицу Word’овского документа. Пример выражения:
Хотелось обратить внимание, что адресация ячеек аналогична Excel’ю, где Cell(9, 2) не что иное как Ячейка (9-ой строки, 2-ой колонки) таблицы.
Оформление Шаблона в табличном виде предпочтительнее, т. к. в этом случае создаваемый документ имеет четкие правила заполнения и форматирования.
Не претендуя на оригинальность, предлагаю осуществить считывание из текстовой базы данных не в Контрол, а в объект Автотекст. Word’овская встроенная справка предоставляет расширенную инструкцию по пользованию автотекстом, в MS Office 97 даже с элементами анимации, поэтому оговорю лишь следующее: при наборе начальных символов выражений, имеющих продолжение в образцах автотекста, в документе появляется выноска с вариантом продолжения заполнения (рис. 1), после чего для окончательного ввода предложенного варианта фразы пользователю достаточно нажать клавишу ENTER или F3, или TAB.
Ограничения, накладываемые на объект VBA автотекст (AutoTextEntries):
имя до 32 символов,
содержание до 255 символов.
Пример диалогового окна Автозамена с выделенной вкладкой Автотекст показан на рис. 2.
Пример панели инструментов Автотекст, заполненной новыми элементами, показан на рис. 3.
Пользователю заполнение документа считанными данными из текстовой базы можно также осуществлять простым выбором имени элемента автотекста из списка, в результате чего в документ будет заноситься все содержание элемента автотекста (до 255 символов). Обратите внимание, список Обычный меню Все элементы организован в алфавитном порядке. Весьма комфортно. Дальнейшие выводы делайте сами.
Теперь немного кода. Так как текстовая база уже имеется, то предлагаемый код, процедуры которого имеют много общего с ранее рассмотренными, будет разрабатываться применительно к ней. Дополнительно учтена возможная некорректность ввода пользователем вместо пробелов символа табуляции.
Дополнительные сведения по Mid, InStr и For … Next можете взять во встроенной справке по VBA MS Office.
Startup (Автозагрузка)
Шаблоны Word’а, помещенные в папку автозагрузки, загружаются автоматически при каждом открытии Word’а. Для задания или изменения папки автозагрузки выберите команду Параметры в меню Сервис, а затем вкладку Расположение. По умолчанию в MS Office 97 место папки автозагрузки C:\Program Files\Microsoft Office\Office\STARTUP. Поместив свой шаблон в каталог автозагрузки (пример показан на рис. 4), вы получите возможность автоматического запуска макрокоманд Шаблона для создания панелей и меню. Кстати, этот прием был использован разработчиками системы автоматической проверки правописания «Рута» и переводчика «Плай» (см. МК №38 за 2001 г., статья «Что такое «Рута» по-украински?», автор Дмитрий Хмара). Разработчику в данном случае нет необходимости беспокоиться о восстановлении меню и панелей после удаления их пользователем. При очередном запуске Word’а Шаблоны, находящиеся в папке автозагрузки (рис. 5) будут автоматически присоединены к документу, и, как следствие, удаленные панели и меню будут восстановлены.
Для автоматического запуска макрокоманд в Word’е в различных режимах зарезервированы слова (см. табл.).
Пример возможного синтаксиса:
Исходя из назначений зарезервированных слов, можно предположить, что основными при разработке Шаблонов будут первые два. AutoExecобязательно придется использовать, если возникнет решение поместить Шаблон в папку Startup, а AutoNew при помещении файла Шаблона в папку коллекции Шаблонов MS Office. Дополнительную информацию вы можете получить во встроенной справке.