Иллюстрированный самоучитель по Microsoft Access 2002

Обмен данными с Microsoft Word в системе автоматизации

Рассмотрим программу, которая открывает файл Contract.doc и автоматически заполняет поля договора. Такая программа может быть связана, например, с кнопкой в форме "Заказы клиентов" (Customer Orders) и обрабатывает нажатие данной кнопки. При нажатии на кнопку должен сформироваться договор с тем клиентом, который отображается в текущей записи формы. Для простоты будем считать, что номер договора будет равен номеру текущего заказа (выделенного в подчиненной форме).

Private Sub CreateContract_Click()
Dim wda As Word.Application
Dim wdd As Word.Document
Dim intPrint As Integer On Error GoTo ErrStartWord
Set wdd = GetObject("C:\Doc\Contract.doc")
Set wda = wdd.Parent
wda.Visible = True
wdd.Bookmarks("ContractNumber").Select
wda.Selection.TypeText
Text: = [Подчиненная форма заказов 1].Form![КодЗаказа]
wdd.Bookmarks("ContractDate").Select With wda
    .Selection.TypeText Text: = Date
    .Selection.GoTo Name: = "CustemerName"
    .Selection.TypeText Text: = [Название]
    .Selection.GoTo Name: = "CustomerAddress"
    .Selection.TypeText Text: = [Страна]
'заполнение остальных полей
intPrint = MsgBox("Печатать договор?", vbYesNo + vbQuestion)
If intPrint = vbYes Then
wdd.Printout
Do While.BackgroundPrintingStatus <> 0
DoEvents
Loop
End If
.ActiveDocument.Close False If.Windows.Count = 0 Then
.Quit
End If
End With
Set wdd = Nothing Set wda = Nothing
Exit Sub
ErrStartWord:
MsgBox Err.Description & " " & Err.Number, vblnformation
Exit Sub
End Sub

В данной программе с помощью функции Getobject() создается объект Document. Если при этом Word не запущен, то одновременно создается скрытый экземпляр объекта Application Word. Если Word уже запущен, то новый документ добавляется к уже открытым документам.

Далее показаны два способа нахождения нужной закладки в документе. В первом случае используется семейство Bookmarks. Вызвав метод Select нужного элемента этого семейства, можно создать объект Selection, а в документе при этом выделяется требуемое поле.

Во втором случае к объекту Selection (вспомните, что он может означать не только выделенную область, но и точку ввода) применяется метод Goto, которому в качестве значения аргумента Name передается имя нужной закладки.

После того как все поля заполнены, договор выводится на печать. Но предварительно пользователь получает сообщение, требующее подтвердить необходимость печати. Документ печатается только если пользователь подтвердит это.

Потом документ закрывается и далее проверяется, открыты ли еще какие-либо документы (используется свойство Count семейства windows). Если других открытых документов нет, то приложение тоже закрывается. В конце процедуры освобождаются обе объектные переменные.

Если в организации отсутствует приложение Access для автоматизации различных деловых процедур, то создавать типовые бланки документов можно более простыми средствами, например, умело используя средства самого редактора Microsoft Word. Однако, когда такое приложение имеется и в базе данных Access хранится большинство нужной информации, было бы просто нерационально вводить вручную в текст документа значения полей. Рассмотренный пример объясняет, как можно этого избежать.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.