При работе с объектами Word for Windows функция CREATEOBJECT() запускает новую копию
приложения только в том случае, если на компьютере это приложение еще не работает. При этом
функция GETOBJECT() не может использоваться для ссылки на документ. Если она используется
в виде
oWrd = GETOBJECT(" ","WORD.BASIC")
то ее применение аналогично функции CREATEOBJECT().
Задание функции в виде
oWrd = GETOBJECT(,"WORD.BASIC")
всегда приводит к ошибке.
В отличие от Excel текстовый процессор Word for Windows имеет только один объект OLE
Automation - WordBasic (в синтаксисе мы пишем Word.Basic). Это означает, что управлять
документом Word из другого приложения мы можем только посредством выполнения команд
WordBasic.
Для того чтобы продемонстрировать пример создания объекта Word, решим классическую для
любого начинающего программиста задачу - выведем на экран слово "Hello!" В связи с тем, что
читатель одиннадцатой главы этой внушительной по объему книги вряд ли захочет относить себя
к начинающим программистам, усложним задачу. Загрузим на компьютере Word и Access. Теперь,
находясь в Access, напишем заветное слово в документе Word.
Для решения этой задачи в контейнере БД Access перейдем на вкладку Модули. На панели
инструментов нажмем кнопку Вставить процедуру. В появившемся диалоговом окне напишем ее
название, например CallWord. В окне Модуль напишем следующий код:
Public Function CallWord() As Integer
Dim oWbApp As Object
Set oWbApp = CreateObject("Word.Basic")
oWbApp.FileNew ` Открываем новый документ
oWbApp.Insert "Hello!" ` Вписываем в документ слово
Set oWbApp = Nothing
Exit Function
End Function
Запустите этот модуль на выполнение. Напоминаем простейший способ сделать это - нажмите
кнопку на панели инструментов Окно отладки и в появившемся окне наберите имя процедуры,
после чего нажмите клавишу Enter. Смело переходите в Word и рассматривайте появившееся там
слово.
Если вас испугало многообразие объектов в Excel и вы уже обрадовались наличию в Word
всего одного объекта, то, возможно, ваша радость преждевременна. При управлении документом
Word с помощью OLE Automation есть одна существенная для программиста неприятность.
Команды WordBasic используют поименованные аргументы, а посредством OLE Automation
ссылаться на аргументы можно только по их положению. Например, вы хотите отключить вывод
предупреждения при сохранении документа. В файле контекстной справки WordBasic вам будет
подсказан следующий синтаксис команды ToolsOptionsSave
ToolsOptionsSave [.CreateBackup = number] [, .FastSaves = number] [, .SummaryPrompt =
number]
В макросе Word вы, соответственно, можете написать:
ToolsOptionsSave .SummaryPrompt = False
Для того чтобы выполнить эту команду из OLE-контроллера, необходимо знать порядковый
номер этого аргумента в команде:
oWbApp.ToolsOptionsSave , , 0
10.3. Использование OLE Automation для передачи данных
В практике создания систем автоматизации обработки данных программисту очень часто
приходится сталкиваться с задачей графического представления данных. В комплекте со всеми
средствами разработки Microsoft поставляется специальная утилита Microsoft Graph 5.0, которая
как нельзя лучше подходит для этих целей.
В этом параграфе мы расскажем, как в пользовательском приложении можно использовать
Microsoft Graph 5.0, а также остановимся на основных возможностях графического представления
converted to PDF by HupBaH9I