Программное формирование документа в Word

Ситуация:
Вам необходимо автоматизировать формирование договоров в виде докумен-тов Word. Типичный договор выглядит так, как представлено на рис. 10.2 (для простоты в этом задании вам нужно будет формировать только его нача-ло). Изменяемые данные, которые должны подставляться программно, выде-лены зеленым цветом.
 
 
ЗАДАНИЕ:
1. Создайте в шаблоне Normal.dot пользовательскую форму с именем FormDog и заголовком Данные договора, аналогичную представленной на рис. 10.3.
 
 
Рис. 10.3. Форма для занесения данных договора
 
2. Создайте макрос, по которому должна открываться эта форма, и назначьте этому макросу кнопку на панели инструментов Word.
3. Создайте и сохраните шаблон на диске с именем C:\DogovorTemplate.dot, в который будут подставляться необходимые данные, и добавьте в нуж-ные места закладки.
4. Создайте для кнопки Сформировать договор на форме программный код, при помощи которого на основе шаблона и подставляемых данных из формы формировался бы новый документ с текстом договора.
 
Примечание
В реальном приложении данные из формы должны были бы сохраняться в базе данных и использоваться потом многократно (например, для формирования других документов). В этом задании для простоты данные для создаваемого документа берутся напрямую из формы. Работа с базой данных в похожей си-туации будет рассмотрена в задании к гл. 12. По этой же причине все данные в этом примере (включая дату и номер договора) текстовые.
 

Ответ к заданию

К пункту 1 задания (создание пользовательской формы):

0.    Откройте окно редактора Visual Basic для Word и щелкните правой кноп­кой мыши по проекту Normal в Project Explorer, а затем выберите в кон­текстном меню Insert | UserForm.

1.    В дизайнере форм сконструируйте форму, аналогичную представленной на рис. 10.3 (про работу с дизайнером форм рассказывалось в гл. 5). Пусть в нашем примере элементы управления на форме называются так:

•        txtNumber — текстовое поле для ввода номера договора;

•        txtCity — текстовое поле для ввода города;

•        txtDate — текстовое поле для ввода даты;

•        txtOrg — текстовое поле для ввода наименования организации;

•        txtPerson — текстовое поле для ввода представителя организации;

•        txtTitle — текстовое поле для ввода его должности;

•        txtLaw — текстовое поле для ввода юридического основания;

•        cmdDog — кнопка для формирования договора;

•        cmdeancel — кнопка Отмена.

2.   Настройте оформление для элементов управления по вашему вкусу. Уста­новите значение для свойства Caption для формы как "Данные договора". Для кнопки cmdDog установите True для значения свойства Default, а для кнопки cmdCancel установите True для значения свойства Cancel. Для свой­ства Name самой формы введите значение FormDog.

К пункту 2 задания (создание макроса и кнопки для отображения формы):

1.    В стандартном модуле NewMacros проекта Normal создайте новую про­цедуру с именем FormDog(). Код ее может быть таким:

 

Public Sub FormDogShow()

FormDog.Show

End Sub

 

Убедитесь, что при его запуске открывается созданная вами форма.

2.    В Word в меню Сервис выберите Настройка, а затем перейдите на вкладку Команды. В списке Категории выберите Макросы, а

затем перетащите на любую панель инструментов макрос Normal.NewMacros.FormDogShow. Настройте для созданной кнопки подходящий формат отображения (см. Урок 1). После этого закройте окно Настройка и убедитесь, что при нажатии на эту кнопку открывается форма.

К пункту 3 задания (создание шаблона документа Word):

1.    Создайте новый документ Word, аналогичный представленному на рис. 10.4.

2.    Поместите в нужные места этого документа закладки. Места вставки за­кладок можно посмотреть на рис. 10.2 (текст, выделенный зеленым). Пусть закладки называются так:

  • bNumber — закладка для ввода номера договора;
  • bCity — закладка для ввода города;
  • bDate — закладка для ввода даты;
  • bOrg — закладка для ввода наименования организации;
  • bPerson — закладка для ввода представителя организации;
  • bTitle — закладка для ввода его должности;
  • bLaw — закладка для ввода юридического основания.

3.   Сохраните этот файл как шаблон Microsoft Word с именем C:\DogovorTemplate.dot.

К пункту 4 задания (создание программного кода для кнопок на форме):

1.    Для события Click кнопки cmdCancel введите следующий программный код:

 

Private Sub cmdCancel_Click()

FormDog.Hide End Sub

 

2.    Для события Click кнопки cmdDog можно использовать следующий про­граммный код:

 

Private Sub cmdDog_Click()

Dim oDoc As Document

Set oDoc = Application.Documents.Add("C:\DogovorTemplate.dot")

oDoc.Bookmarks("bNumber").Range.Text = txtNumber.Value

oDoc.Bookmarks("bCity").Range.Text = txtCity.Value

oDoc.Bookmarks("bDate").Range.Text = txtDate.Value

oDoc.Bookmarks("bOrg").Range.Text = txtOrg.Value

oDoc.Bookmarks("bPerson").Range.Text = txtPerson.Value

oDoc.Bookmarks("bTitle").Range.Text = txtTitle.Value

oDoc.Bookmarks("bLaw").Range.Text = txtLaw.Value FormDog.Hide

oDoc.Activate 

End Sub

Запускаем программу и наслаждаемся порделанной работой! 

 

Задания для самостоятельной работы: 

Написать аналогичную программу (программное формирование документа в Word) следующих документов.

Варианты: 

  1. Служебная записка
  2. Заявление об утере документа
  3. Объяснительная записка
  4. Акт выполненых работ 
  5. Договор купли-продажи
  6. Комерческое предложение
  7. Протокол атестационной комиссии 
  8. Комунальная платежка
  9. Доклодная записка
  10. Справка с места учебы/работы
  11. Справка 2НДФЛ