
11.6.1. Закладки и шаблон
Чтобы создать шаблон, создадим для начала новый документ. После этого наберем и отформатируем в документе текст приглашения: "Уважаем ый Александр Александрович! Приглашаем вас на собрание, которое состоится 17.05.08. Администрация" (рис. 11.1.).
Рис. 11.1. Подготовка текста шаблона
В этом тексте выделены места, которые могут меняться. Давайте создадим таблицу, содержащую информацию об этих местах документа (табл. 11.1.).
Таблица 11.1. Изменяемые части документа и закладки |
||
Изменяемый элемент |
Описание |
Имя и номер закладки |
ый |
Окончание, определяющее лицо или лица, которым адресовано послание. Возможные варианты: "ый" - для мужчины, "ая" - для женщины, "ые" - для группы лиц |
bm_Peoples, №1 |
Александр Александрович |
Имя приглашенного |
bm_Name, №2 |
17.05.08 |
Дата |
bm_Date, №3 |
Чтобы назначить элементу документа закладку, нужно выделить этот элемент (например, слово или часть слова), после чего перейти на вкладку Вставка, нажать там кнопку Связи и в появившемся меню выбрать пункт Закладки. Появится окно, в котором нужно задать имя закладки и нажать на кнопку Добавить для добавления закладки в документ (рис. 11.2.).
увеличить изображение Рис. 11.2. Добавление закладки в документ
После того, как закладки добавлены, оснастим наш шаблон средствами для автоматического редактирования новых документов, созданных на его основе. Текст программы мы поместим в обработчик события New шаблона.
В нашем случае это должен код (листинг 11.8.), который запрашивает данные у пользователя. При необходимости можно видоизменить программу таким образом, чтобы она брала данные из специально подготовленного файла, из базы данных, можно создать форму для ввода всех значений по каждому из пользователей и, запустив ее, создать необходимое количество документов, используя шаблон и т.д.
Private Sub Document_New()
Dim obj_NewDoc As Document
Dim obj_Range As Range
Set obj_NewDoc = Application.Documents.Item(1)
Set obj_Range = _
obj_NewDoc.Bookmarks("bm_Peoples").Range
obj_Range.Text = _
InputBox("Введите окончание обращения: -ый, -ая, -ые")
Set obj_Range = _
obj_NewDoc.Bookmarks("bm_Name").Range
obj_Range.Text = _
InputBox("Введите имена приглашенных")
Set obj_Range = _
obj_NewDoc.Bookmarks("bm_Date").Range
obj_Range.Text = _
InputBox("Введите дату собрания")
End Sub
Листинг 11.8. Код для автоматического формирования нового документа на основе шаблона (html, txt)
Сначала мы объявляем пару объектных переменных. Одну — для документа, с которым будем работать, другую — для диапазона документа, который будем выбирать с помощью закладки и после этого редактировать.
В первую очередь получаем ссылку на созданный документ. Он будет первым в коллекции Application.Documents.
Далее — записываем в объектную переменную obj_Range диапазон, которому соответствует закладка с именем bm_Peoples — то есть та самая, которая должна хранить окончание обращения.
Следующий шаг — воспользоваться свойством Text объекта Range и предложить пользователю ввести окончание для обращения.
Далее процесс повторяется — ссылка на диапазон очередной закладки записывается в переменную, после чего этот диапазон модифицируется путем ввода данных.
Здесь мы рассмотрели лишь общую схему работы с закладками. На практике неудобно будет вводить большое количество информации в окна запросов. Поэтому данный пример можно развивать в нескольких направлениях.
Создать форму с текстовыми полями для ввода данных. После ввода достаточно нажать на кнопку, чтобы на основе шаблонабыл сформирован новый документ, который можно сохранить на диске.
Создать отдельный документ MS Word, в котором будут перечислены изменяемые части документа. Например, если рассмотреть обычное приглашение на какое-то мероприятие, в изменяемую часть приглашения входит лишь обращение к приглашаемым. Это значит, что в документ, создаваемый вручную, можно включить список имен и фамилий приглашенных с обращениями к ним, после чего создать шаблон и написать макрос, который автоматически подставит данные из списка в документы, созданные пошаблону. Этот метод удобен при работе с небольшими (до нескольких сотен) списками и может быть реализован стандартными средствами слияния документов MS Word.
Использовать в качестве источника информации базу данных или документ другого типа. Например, можно воспользоваться базой данных MS Access или документом MS Excel, содержащим список приглашенных. О работе с базами данных и документами MS Excel мы поговорим ниже.