Semenalidery.com

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Объектная модель word

Объектная модель MS Word, объект Application

9.1. Объектная модель MS Word

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

В частности, это следующие:

  • Word (Microsoft Word) — чтобы вызывать объекты Microsoft Office Word из других приложений используется объект Word.
  • Application (Приложение) — объект, который включает в себя все остальные объекты и коллекции. Сам объект Application включается в объект Word .
  • Documents (Документы) — коллекция, которая включает в себя объекты Document (Документ). Объект Document представляет собой документ, с которым вы работаете в редакторе.
  • Bookmarks (Закладки) — c помощью объектов этой коллекции можно задавать места в документе, в которые, при автоматическом создании, можно вставлять изменяемые части.
  • Paragraphs (Абзацы), Sentences (Предложения), Words (Слова), Characters (Символы), Tables (Таблицы), OMath (Математические формулы), Эти коллекции, содержащие объекты, соответствующие их названиям, могут использоваться для обработки слов документа ( Words ), предложений ( Sentences ), отдельных символов ( Characters ) и т.д.
  • Selection (Выделенная область) — представляет собой выделенную область документа или позицию, в которую будет осуществляться вставка очередного символа . Этот объект часто используют при создании простых документов. Однако у него есть существенные недостатки, что делает предпочтительнее использование объекта Range в большинстве случаев.
  • Range (Диапазон) — входит в Document и другие объекты, представляет собой диапазон документа, ограниченный начальным и конечным символом.

Работая с объектной моделью MS Word следует понимать, что, например, объекты Document и Selection могут содержать одинаковые коллекции объектов, например, и там и там есть коллекция Characters , в которую входят объекты Character — то есть — символы. Однако в случае с объектом Document мы можем работать с любым символом документа, а в случае с Selection — лишь с символами в пределах выделенной области. Однако, несмотря на различия, и там и там коллекция Characters имеет одинаковые свойства и методы. То же самое касается и других коллекций и объектов.

Давайте начнем с объекта Application и здесь же поговорим об использовании объектных переменных .

9.2. Работа с объектными переменными

Объектные переменные — это переменные, которые хранят ссылки на объекты . Чтобы инициализировать объектную переменную , нужно использовать ключевое слово Set . Например, так (листинг 9.1.):

Здесь вы можете видеть присваивание переменной ссылки на объект Word.Application . Код, подобный этому, нужен в других приложениях Microsoft Office для запуска нового экземпляра MS Word .

Для того чтобы вы могли работать с Microsoft Word из других приложений — подключите библиотеку Microsoft Word 12.0 Object Library . Сделать это можно, открыв в редакторе окно References командой Tools o References .

Немного ниже мы поговорим о том, что можно делать с объектными переменными , а пока сосредоточимся на их объявлении и инициализации.

Как видите, в листинге 9.1 мы не объявляли переменную — мы сразу присвоили ей ссылку на объект . При последующей работе с такой необъявленной объектной переменной , мы не сможем пользоваться подсказкой по свойствам и методам. Вспомните — когда вы набираете в редакторе имя элемента управления и ставите после него точку — вы видите подсказку. Это очень удобно, так как позволяет избежать ошибок и излишних «походов» в справочную систему VBA .

Для того чтобы справка по свойствам и методам работала, объектную переменную надо сначала объявить, а потом присвоить ей ссылку на объект . Например, так (листинг 9.2.):

Ссылку на объект можно присвоить в процессе объявления переменной. Для этого нужно воспользоваться ключевым словом New (листинг 9.3.):

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

О том, как же пользоваться объектными переменными , скорее даже не ими, а объектами, на которые они ссылаются, мы поговорим ниже.

9.3. Объект Application — приложение

Объект Application можно представить в виде приложения Microsoft Word .

Такой код позволит вывести в окно сообщения информацию об имени приложения:

Как видите, здесь мы обратились к свойству Name (Имя) объекта Application . Вот, что будет выведено при его исполнении (рис. 9.1.).

Здесь мы обходимся без объектных переменных , работая с уже существующим объектом. Ведь если этот код исполняется в Microsoft Word , это значит, что сам Microsoft Word уже запущен.

Чтобы упростить обращение к нескольким свойствам объекта, можно воспользоваться оператором With-End With . Этот оператор позволяет обращаться к нескольким свойствам или методам объекта в упрощенной форме. Например, чтобы вывести имя приложения и узнать номер сборки программы нужно воспользоваться таким построением (листинг 9.4.):

Здесь мы использовали объект Application — вместо него может быть любой другой объект или объектная переменная .

Еще один оператор, которым удобно пользоваться при работе с объектами и коллекциями — это For Each…Next .

Например, для вывода в окнах сообщений имен всех открытых документов, можно написать такой код (листинг 9.5.):

Var_Doc — это переменная типа Variant . Коллекция Application.Documents содержит все открытые документы. При каждом проходе цикла в переменную var_Doc записывается ссылка на очередной объект в коллекции.

Чтобы выйти из цикла , можно воспользоваться оператором Exit For .

Сейчас мы кратко опишем важнейшие методы , свойства и события объекта Application .

9.4. Методы объекта Application

9.4.1. BuildKeyCode, KeyString — горячие клавиши

BuildKeyCode возвращает уникальный цифровой код для заданной комбинации клавиш. Используется при назначении «горячих клавиш» для выполнения различных операций.

KeyString возвращает комбинацию клавиш для переданного кода.

Ниже мы рассмотрим пример программного назначения клавиатурной комбинации для вызова макроса.

9.4.2. ChangeFileOpenDirectorу — путь для работы с файлами

ChangeFileOpenDirectory позволяет установить директорию, в которой Microsoft Word ищет файлы для открытия. В установленной папке программа будет искать файлы при программном открытии файлов и при вызове окна открытия файлов.

Выбранная директория будет использоваться для открытия файлов по умолчанию лишь до тех пор, пока Word не будет перезапущен.

Например, чтобы установить папку » C:Новые документы » в качестве папки по умолчанию, можно использовать такой код (листинг 9.6.):

Следует отметить, что если мы вызываем метод или свойство объекта Application из макроса Microsoft Word, мы можем опускать вызов Application — то есть, в вышеприведенном примере можно написать так:

9.4.3. CleanString — очистка строк

CleanString очищает переданную строку от непечатаемых и специальных символов, превратив ее в обычный текст. Такой же текст можно получить, если скопировать текст из Microsoft Word в Блокнот, а потом — обратно. Например, с помощью такого кода можно получить очищенную строку из выделенной области документа (листинг 9.7.).

9.4.4. Keyboard — программное переключение раскладки

Keyboard позволяет программно переключать раскладку клавиатуры. При переключении используется идентификатор языковых и клавиатурных установок. Чтобы включить русскую раскладку, можно воспользоваться таким кодом (листинг 9.8.):

Очевидно, что 1049 — это код русского языка. Для включения английской раскладки используйте этот метод с идентификатором 1033.

9.4.5. ListCommands — справка по горячим клавишам

ListCommands это необычный метод — если вызвать его с параметром True (листинг 9.9.) — он создаст новый документ, содержащий таблицу со списком клавиатурных сочетаний, назначенных командам MS Word. Таблица содержит несколько десятков страниц.

9.4.6. NewWindow — копия окна активного документа

NewWindow создает копию окна активного документа. Это может быть полезным например, для того, чтобы вывести один и тот же документ на два монитора при работе с расширенным рабочим столом и т.д. Например, метод можно вызвать так:

При необходимости можно задать, для какого именно документа вы хотите создать копию окна. Однако, это потребует использования других объектов. Например — коллекции Windows , содержащей окна документов. Такой код (листинг 9.11.) создаст одну копию для каждого открытого окна:

Мы не случайно запустили цикл обхода открытых окон в обратном порядке. Дело в том, что иначе будет создано несколько копий одного и того же документа.

В этом примере вам встретились неизвестные ранее свойства Count и Item . Первое обычно содержит количество элементов в коллекции, второе позволяет обращаться к элементам по индексам или именам.

При создании копии после имени документа появляется двоеточие с номером окна, например, «:1» для первого, «:2» для второго и т.д.

9.4.7. OnTime — запуск макросов по расписанию

OnTime позволяет устанавливать таймер, по которому можно запустить макрос в определенное время. Например, чтобы выполнить макрос MyMacros , который хранится в том же документе, что и исполняемый макрос, достаточно выполнить такой код (листинг 9.12.).

Параметр When указывает на время запуска, параметр Name — на имя макроса. Важно, чтобы макрос был доступен как в момент запуска таймера, так и в момент запуска самого макроса. Для того чтобы это условие соблюдалось, желательно хранить макросы, запускаемые по таймеру, в Normal.dotm , в другом глобальном шаблоне, или в том же документе, в котором произошел запуск таймера.

Как видите, мы привели пример лишь для запуска макроса в строго определенное время. А как же быть, если нужно запустить макрос, например, через пятнадцать секунд после выполнения какой-либо процедуры? Ответ прост (листинг 9.13.)

Здесь мы запускаем тот же самый макрос, но уже через 15 секунд после установки таймера. Функция Now имеет тип Date и возвращает текущую дату и время, а функция TimeValue преобразует переданное ей время в формат Date .

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

Создание документов Word программным путем

Используем сценарии VBScript

Создавать текстовые файлы, используя сценарии, достаточно легко, так как среда Windows в целом и окружение Windows Script Host (WSH) в частности предоставляют специальные средства для работы с текстовыми файлами. Однако, хотя текстовые файлы идеальны для хранения простой неструктурированной информации, их недостаточно в случае более сложных требований. Если необходимо представить иерархическую информацию, можно воспользоваться средствами XML и создавать текст с метками, содержащий (или не содержащий) обращение к схеме. Однако часто приходится создавать документы, которые представляют информацию, использующую сложную разметку. Файлы HTML являются альтернативой связывания данных и сложной разметки страницы. Однако документы HTML представляют собой открытый текст и в принципе являются легкой добычей для злоумышленников. К тому же документы HTML редко бывают самодостаточными и часто содержат ссылки на внешние ресурсы, такие как изображения, управляющие элементы ActiveX и апплеты.

Читать еще:  Латинские цифры в word

В отличие от рассмотренных выше решений, пакет Microsoft Word фактически является стандартом в документообороте реального мира. Создавать такие документы в интерактивном режиме легко, но можно ли автоматизировать этот процесс, создавая программно и используя документы, основанные на шаблонах? Да, и сейчас я объясню почему. Я не буду вдаваться в детали той стороны процесса, которая касается работы в пакете Word. Вместо этого я уделю внимание программному созданию и управлению документами, предположив, что читатели знакомы с основами работы с шаблонами и закладками Word.

Использование шаблонов Word

Иногда мне бывает нужно подготовить счета, потом распечатать их для рассылки писем или распространить с помощью электронной почты. Обычно я открываю Word, выбираю свой шаблон счета, ввожу необходимую информацию и сохраняю файл как новый документ. Потом я посылаю счет клиенту по обычной почте либо в качестве документа, прикрепленного к электронному сообщению.

В большинстве случаев счета и другие формы являются простыми документами, использующими одинаковые шаблоны, но содержат различную информацию, такую как дата, номер счета, описание и сумма счета. Шаблон, на котором основан документ, обычно содержит одно или несколько пустых полей, в которые пользователи могут добавлять данные, характерные для конкретной формы.

В пакете Word можно создавать формы для стандартных документов, таких как счета, настраивая файл-шаблон с расширением .dot. Когда требуется подготовить новый документ на основе шаблона, следует щелкнуть на пункте меню File, New. После выбора нужного шаблона в окне New и нажатия кнопки OK Word создает и отображает новую форму, основанную на этом шаблоне. В соответствующие поля пустой формы вводится различная информация.

При использовании Word в интерактивном режиме пользователь может видеть, куда необходимо ввести информацию. Но как заставить вводить различную информацию в нужные поля сценария WSH? Прежде чем я отвечу на этот вопрос, давайте рассмотрим объектную модель Word — инфраструктуру на основе COM, которая помогает программно управлять поведением пакета Word.

Объектная модель Word

Объектная модель Word содержит богатую и сложную иерархию объектов. Эта объектная модель программно раскрывает интерактивные функции Word для ориентированных на COM клиентов (т. е. сценариев WSH и Visual Basic(VB)). Корневым элементом объектной модели Word является объект Word.Application. Для создания экземпляра этого объекта необходимо использовать следующий код:

Объектная модель Word работает с исполняемым файлом Word (winword.exe), а не с отдельной библиотекой DLL. Таким образом, каждый экземпляр объекта Word.Application эквивалентен запуску и работе экземпляра приложения Word. Однако эти экземпляры невидимы. А поскольку мы не можем их видеть, есть риск появления множества экземпляров, которые существуют бесцельно, понапрасну расходуя системные ресурсы. Чтобы избежать распространения бесполезных экземпляров Word, необходимо сделать так, чтобы сценарии всегда освобождали объект после завершения работы с ним с помощью метода Quit:

Хотя заново создаваемые экземпляры Word по умолчанию невидимы, можно сделать их видимыми, задав свойству Visible значение True:

Когда экземпляр виден, можно закрыть приложение вручную. Установка свойства Visible в True может очень пригодиться при отладке приложений Word на основе сценариев.

Работа с элементами объектной модели Word полностью совпадает с работой приложения в интерактивном режиме. После инициализации приложения мы создаем новый документ или открываем существующий. Для создания нового пустого документа на основе определенного шаблона следует вызвать метод Add из коллекции Documents и указать файл .dot, где хранится нужный шаблон. Приведенный ниже код создает документ, который содержит возможности, встроенные в шаблон, названный Invoice:

Для открытия существующего документа следует использовать коллекцию Documents, содержащую объекты Document. Код, приведенный в листинге 1, открывает документы invoice.doc и expenses.doc. Этот фрагмент кода сначала открывает файл invoice.doc, потом — expenses.doc. Здесь статус программно созданного документа в точности соответствует статусу документа-шаблона, который вы открыли интерактивно с помощью пункта Open меню File, работая в приложении Word. Если вы сделали экземпляр видимым, на экране появятся окна документов из файлов invoice.doc и expenses.doc.

Переменные doc1 и doc2, используемые в листинге, ссылаются на объекты, представляющие вновь открытые документы Word. Также можно использовать индекс к коллекции Documents для обращения к открытым файлам. Например, следующий код возвращает ссылку на первый открытый документ:

Этот фрагмент кода эквивалентен присвоению переменной doc1 результата вызова метода Documents.Add, как показано во второй строке листинга 1.

Программный интерфейс объекта Document содержит все функции, доступные в меню File и Edit пакета Word. Для печати документа следует использовать метод PrintOut объекта Document; для записи документа в другое место — метод SaveAs. Когда Word применяется интерактивно, оба метода представляют диалоговое окно, позволяющее выбрать принтер и путь. При использовании метода PrintOut или SaveAs можно указать принтер или путь к файлу в качестве аргумента, как показано ниже:

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

Метод SaveAs также позволяет вводить дополнительный аргумент, для указания выходного формата (например, документ Word, формат Rich Text Format (RTF) — Word 6.0, неформатированный текст). Приведенный ниже фрагмент кода показывает, как сохранить документ в формате RTF:

За дополнительной информацией о константах, обозначающих различные форматы файла, следует обратиться к документации пакета Word.

Чтобы закрыть документ, нужно использовать метод Close:

При закрытии документа все документы, открытые после него, автоматически перемещаются на одну позицию вверх. Так что, если использовать код:

и впоследствии закрыть ссылку на переменную doc1, на позиции переменной doc2 в массиве окажется Documents(0).

Когда работа с документами Word ведется программно, можно связывать форматы и стили с абзацами, словами и символами в документе, так же как при интерактивном использовании Word. Кроме того, можно добавлять комментарии и закладки к элементам документа. При программном создании документов Word на основе шаблона можно использовать закладки для ввода пользовательских данных в нужные места документа.

Использование закладок в пакете Word

Под закладкой понимается связь между именем и определенным местом в документе Word. Закладки — особенность пакета Word, которую можно использовать для пометки выбранного текста, графики, таблиц или любого другого элемента документа. Word хранит закладки в документе. Для добавления закладки в интерактивном режиме следует выбрать текст или элемент, который требуется пометить, потом выбрать пункт Bookmark в меню Insert. В окне Bookmark нужно ввести имя создаваемой закладки.

Например, предположим, у нас есть шаблон Word (файл .dot) и нам нужно просмотреть текущие данные в определенной позиции. Откроем шаблон и выберем область, отведенную под данные. Чтобы упростить правку шаблона в будущем, можно ввести текст указателя места заполнения, описывающий данную область (например: данные о счете размещать здесь). После ввода текста указателя места заполнения следует выбрать текст, выбрать в меню Insert пункт Bookmark, ввести имя закладки (например, InvoiceDate), после чего сохранить шаблон.

После того как будет программно создан на основе шаблона новый документ, нужно использовать коллекцию Bookmarks документа для распознавания закладок и изменения их текста. Например, чтобы ввести данные в закладку InvoiceDate, необходимо использовать код, подобный следующему:

Как показывает данный фрагмент кода, обращение к закладке осуществляется через ее имя. Имя закладки указывает на нужный помеченный объект в коллекции Bookmarks документа. Свойство Range является объектом класса TextRange. Это свойство определяет настройки области текста закладки. Свойство Text объекта TextRange позволяет читать и переписывать текущее значение закладки. Приведенный выше фрагмент кода задает для даты счета значение 7/1/2002.

Создание счета

После программного создания документа на основе шаблона следует использовать закладки для заполнения формы счета свежими данными и сохранить документ в новый файл. Теперь можно распечатать документ, отправить его кому-нибудь по электронной почте и т. д.

В листинге 2 показан сценарий CreateInvoice.vbs, который собирает определенную информацию и составляет счет. Код открывает шаблон TestInvoice.dot, расположенный в той же папке, что и сценарий, когда создает новый документ на его основе (можно скачать файл TestInvoice.dot с нашего сайта в разделе Download). На рис. 1 показан шаблон TestInvoice.dot.

Сценарий CreateInvoice.vbs запрашивает у пользователя номер счета, дату и имя адресата. Код фрагмента A в листинге 2 использует закладки для внедрения этой информации в основной документ. Затем код фрагмента B использует метод SaveAs для сохранения документа в текущей папке. Сценарий CreateInvoice.vbs создает имя готового документа, соединяя номер счета с префиксом inv_. Способ именования и папка назначения заданы условно. В конце сценарий CreateInvoice.vbs закрывает документ и приложение.

Отправка документа по электронной почте

Объектная модель Word содержит метод объекта Document, который позволяет послать документ по электронной почте:

Как можно заметить, метод SendMail не имеет аргументов. Он вызывает зарегистрированный клиент интерфейса Messaging API (MAPI) — обычно Microsoft Outlook или Outlook Express. Появляется окно электронного письма с присоединенным к нему документом Word. Пользователь просто заполняет поле To и нажимает кнопку Send. В папке Sent Items почтового клиента автоматически регистрируется отправка сообщения. Если пользовать не имеет постоянного соединения, почтовый клиент помещает сообщение в папку Outbox для отправки при следующем подключении.

При использовании метода SendMail необходимо убедиться, что сценарий не закрывает приложение Word до появления окна электронной почты. Метод SendMail работает асинхронно относительно основного сценария, поэтому сценарий не имеет возможности убедиться в том, что метод закончил отправку сообщения. Если сценарий попытается закрыть Word до завершения работы метода SendMail, система выдаст сообщение, что невозможно закрыть Word, пока не завершится выполнение команды. Если окно с таким сообщением появляется, пользователь должен закрывать его вручную. Чтобы избежать подобной ситуации, можно добавить вызов процедуры Sleep, как я сделал во фрагменте B листинга 2, чтобы временно остановить выполнение сценария и дать методу SendMail время на завершение. Кроме того, можно добавить собственное окно подтверждения в свой сценарий, тогда пользователь сможет подтверждать отправку письма. Приведенный ниже код отображает окно подтверждения Done непосредственно перед тем, как сценарий закрывает Word:

Читать еще:  Печать нескольких документов word

Большинство форм сегодня представляют собой простые документы Word. После интерактивного создания шаблона в пакете Word можно без труда написать сценарий, подобный приведенному в статье, для заполнения формы пользовательской информацией, после чего позвольте окружению WSH и объектной модели Word завершить начатое.

Введение в программирование в Word. Обзор объектной модели Word

Объектная модель Microsoft Word, объекты Application, Document, Selection, Range, Bookmark

Общая структура объектов Word выглядит так, как показано на рис. 10.1.

Рис. 10.1 Так выглядят главные объекты Word

Но пугаться совсем не стоит — большая часть из этих сотен объектов никогда вам не понадобится. На практике для решения большинства программных задач достаточно знать всего лишь пять объектов (с сопутствующими коллекциями):

· объект Document (с коллекцией Documents);

· объект Bookmark (с коллекцией Bookmarks).

Ниже все эти самые важные объекты будут подробно рассмотрены. Для каждого объекта вначале будут рассмотрены общие моменты, связанные с ними, например, в каких ситуациях они нужны и как при помощи них выполнять те или иные действия. Поскольку наиболее часто встречающаяся задача программирования в Word — это создание документа (на основе шаблона) и запись в нужное место документа необходимой информации, то акцент будет сделан использовании соответствующих объектов длярешении этой задачи.

Кроме того, для каждого объекта будут перечислены самые важные свойства, методы и события с кратким их описанием. Эта часть добавлена по просьбе слушателей учебного курса по программированию в Office, поскольку многие из них не владеют английским так, чтобы свободно читать документацию. Если вы читаете эту книгу подряд, то эти справочные части можно просто пропускать.

Объект Word.Application, запуск нового экземпляра Word, события объекта Word.Application

Объект Application — это само приложение Microsoft Word. Все остальные объекты Word «вложены» в этот объект. Создать этот объект — значит запустить Word на вашем компьютере. Как правило, это нам и надо (если мы создаем в формате Word из другого приложения, например, из Access). Но не забудьте — если вы запускаете Word из другого приложения Office, то необходимо добавить в ваш проект ссылку на библиотеку Microsoft Word 11.0 Object Library.

Код на запуск Word очень прост:

Dim oWord As New Word.Application

Однако, выполнив этот код из другого приложения, вы, скорее всего, даже не заметите, что у вас что-то произошло. Причины просты:

· по умолчанию Word запускается в скрытом окне;

· если в нем не открыт ни один документ, он тут же и закрывается (после того, как завершается создавшая его процедура).

Сделать Word видимым очень просто:

Однако возникает вопрос: а нужно ли его делать видимым? Некоторые знакомые разработчики утверждают, что не нужно. Пусть Word работает в скрытом окне, создавая требуемый документ. Когда пользователю потребуется, он этот документ откроет. Решать вам, но я предпочитаю, чтобы Word все-таки был видимым: во-первых, сразу видны все проблемы при создании документа, а, во-вторых, пользователям почему-то очень нравится, когда у них на глазах открывается Word и начинает печатать строки, которые в противном случае пришлось бы печатать им самим.

Если вы работаете с Word в скрытом окне, не забудьте после выполнения необходимых действий его закрыть (иначе он так и останется в оперативной памяти, видимый только через Task Manager). Для закрытия Word нужно вызвать его метод Quit().

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

Dim oWord As New Word.Application

Если Word уже открыт, то можно получить на него ссылку, например, при помощи такого кода:

Set oWord = GetObject(,»Word.Application»)

Однако на практике, кроме очень специальных случаев (активизация объектов OLE), такой подход по сравнению с открытием нового экземпляра Word ничего нам не дает. Наоборот, появляется дополнительный риск нечаянно испортить открытый в существующем экземпляре созданный пользователем документ или закрыть существующий экземпляр Word без сохранения пользовательских документов. Поэтому лучше создавать новый экземпляр Word.

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

Application.Selection.TypeText «Мой текст»

Selection.TypeText «Мой текст»

Еще один важный момент, который связан с объектом Application в Word. Для этого объекта предусмотрено большое количество удобных в использовании событий (открытие документа, выход из Word, щелчок правой кнопкой мыши, изменение документа, печать документа, сохранение документа и т.п.) Однако по умолчанию все эти события не видны. Чтобы они появились, необходимо в разделе Declarations кода формы (только формы — не модуля!) объявить объект Application с ключевым словом WithEvents, например, так:

Public WithEvents App As Word.Application

В списке объектов у нас появится новый объект App (то есть Application), для которого можно выбрать события и добавлять код в событийные процедуры точно так же, как это мы делаем для формы и элементов управления.

1. Таганов Л. С., Пимонов А. Г. Информатика: [Электронныйресурс]: учеб.пособие для студентов техн. направлений испециальностей вузов/ Л. С. Таганов, А. Г. Пимонов; ГУ КузГТУ. – Кемерово, 2010. – 330 с.

2. Информатика. Базовый курс: учеб. пособие для студентов втузов/ под ред. С. В. Симоновича. — 3-е изд. — СПб.: Питер, 2012. — 640 с.

3. Таганов, Л. С. Конспекты лекций по курсу«ИНФОРМАТИКА»: [Электронный ресурс]: для студентов всех форм обученияспециальности130400.65 «Горное дело» / Л. С. Таганов; КузГТУ. – Кемерово, 2013. – 290 с.

Дата добавления: 2018-04-04 ; просмотров: 287 ;

ОБЪЕКТНАЯ МОДЕЛЬ Microsoft Word .ОБЪЕКТ Word.Application

Общая структура объектов Word

На практике для решения большинства программных задач достаточно знать всего лишь пять объектов (с сопутствующими коллекциями):

¾ объект Document (с коллекцией Documents);

¾ объект Bookmark (с коллекцией Bookmarks).

Объект Application — это само приложение Microsoft Word. Все остальные объекты Word «вложены» в этот объект. Создать этот объект — значит запустить Word на компьютере. Как правило если создается объект Word из другого приложения Office, то необходимо добавить в проект ссылку на библиотеку Microsoft Word 12.0 Object Library.

Код на запуск Word:

Dim oWord As New Word.Application

Однако, выполнив этот код из другого приложения окно ворда на экране не появляется, т.к. по умолчанию Word запускается в скрытом окне;

Чтобы сделать Word видимым нужно установить его свойство:

Для объекта Word предусмотрено большое количество событий (открытие документа, выход из Word, щелчок правой кнопкой мыши, изменение документа, печать документа, сохранение документа и т.п.) Однако по умолчанию все эти события не видны. Чтобы они появились, необходимо в разделе Declarations кода формы (только формы — не модуля!) объявить объект Application с ключевым словом WithEvents, например, так:

Public WithEvents App As Word.Application

В списке объектов появится новый объект App (то есть Application), для которого можно выбрать события и добавлять код в событийные процедуры точно так же, как это делается для формы и элементов управления.

КОЛЛЕКЦИЯ Documents. основные методы

Коллекция Documents представляет все документы Word, открытые в настоящий момент. Начинается нумерация документов в коллекции с 1.

Основное свойство коллекции «Count» — количество открытых документов.

¾ Add() —позволяет создать и сразу же открыть новый документ (и вернуть ссылку на его объект). Полный синтаксис этого метода выглядит как:

Add(Template, NewTemplate, DocumentType, Visible)

Template — это шаблон для создания нового документа, NewTemplate (true/false ) — делать ли новый документ шаблоном, DocumentType — варианты: wdNewBlankDocument , wdNewEmailMessage, wdNewFrameset или wdNewWebPage (по умолчанию — новый чистый документ ), Visible — будет ли новый документ видимым (по умолчанию ) или невидимым.

¾ Open() — позволяет открыть документ с диска и добавить его в коллекцию. Этот метод принимает множество параметров, из которых обязательным является только один — имя документа (вместе с путем к нему). Самый простой вариант применения этого метода выглядит так:

Dim oDoc1 As Document

Set oDoc1 = Documents.Open(«c:doc1.doc»)

¾ метод Item() позволяет найти нужный документ в коллекции по его индексу. Но обычно для получения ссылки на нужный документ используется конструкция For..Next с проверкой значения какого-либо свойства документа через If. Чаще всего это свойство — Name:

Dim oDoc1 As Document

For i = 1 To Documents.Count

Set oDoc1 = Documents.Item(i)

If oDoc1.Name = «doc1.doc» Then

Set oDoc1 = Nothing

¾ методы Save() и Close() — позволяют сохранить и закрыть все документы в коллекции соответственно.

Объект Document: создание, сохранение и закрытие документов

¾ как элемент коллекции Documents. Формате обращения может выглядеть, например, так: Documents.Item(1);

Чтобы создать новый экземпляр Word, введите такой код кнопки;

Private Sub Комманда1_Click() — создаём новый экземпляр Word-a
Set WordApp = New Word.Application — экземпляр приложения
Set DocWord = WordApp.Documents.Add — экземпляр документа
End Sub

Для сохранения документа под новым именем и в определенное место используйте данный код код: DocWord.SaveAs «c:DDD.doc»

После такого сохранения вы можете по ходу работы с документом сохранять его.

Читать еще:  Поиск в word

DocWord.Save — сохраняем документ

Или проверить, были ли сохранены внесенные изменения свойством Saved и если изменения не были сохранены — сохранить их;
If DocWord.Saved=False Then DocWord.Save

Завершив работу с документом, вы можете закрыть сам документ методом Close и сам Word методом Quit.
DocWord.Close True — закрываем документ (без запроса на сохранение)
WordApp.Quit True — закрываем Word (без запроса на сохранение)

Если в методах Close и Quit не использовать необязательный параметр True то Word запросит согласие пользователя (если документ не был перед этим сохранён) на закрытие документа.

Структура документа Word.

Для перехода в режим структуры документа служит кнопка «Структура» панели «Режим просмотра документа» ленты «Вид».

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

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

У каждого элемента, имеющего подуровни, присутствует значок «+». Двойной щелчок на значке позволяет отобразить/скрыть подуровни.

Уровни можно перемещать вверх/вниз относительно друг друга, а также изменять само значение уровня на более низкое/высокое. Для этих целей служат зелененькие и синенькие стрелочки, расположенные слева на панели «Работа со структурой».

При работе в режиме структуры форматирование текста по умолчанию не отображается.

Для работы с большими документами предназначена панель «Главный документ». Суть работы сводится к тому, что сам документ разбивается на отдельные части, которые хранятся в отдельных файлах. Все «в кучу» собирается в главном документе, который должен быть предварительно структурирован.

Объекты Selection

Объект Selection представляет выделенную область.

Поскольку в каждом окне может быть только одна выделенная область, то одновременно может существовать несколько объектов Selection – по одному на каждое существующее окно или подокно. Заметим также, что объект Selection всегда существует в окне, даже если некоторая область явно и не выделена. В последнем случае объект Selection задает точку вставки, определенную позицией курсора.

Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection.

Метод Select – это процедура без параметров, которая создает объект Selection (т.е. выделенную область) в качестве второстепенного эффекта.

Объект Range

Объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с ним – комментарии, ссылки и прочее.

Так, если некоторый объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод.

Метод Range – это функция, возвращающая в качестве результата объект Range (т.е. область определения некоторого объекта).

Другие объекты Word.

Рассмотрим некоторые другие объекты Word.

Объекты Word.AddIn, работа с шаблонами Word из VBA

Коллекция AddIns состоит из объектов AddIn, которые представляют глобальные шаблоны Word и встраиваемые приложения Word. Важная возможность этой коллекции заключается в том, что при помощи метода Add() можно в автоматическом режиме устанавливать шаблоны и надстройки. Если вы активно используете эти средства в своих приложениях, то есть смысл подумать над реализацией проверки наличия нужного шаблона или надстройки.

Шаблоны — это файлы с расширением .dot, которые служат образцами для создания документов Word. Чаще всего они используются для того, чтобы защитить от пользователя сохраненные начальные «заготовки» отчетов или как хранилища стилей, макросов, параметров и т.п. для сложных документов, для которых требуется стандартизация.

Объект AutoCorrect, работа с параметрами автозамены в Word из VBA

При помощи этого объекта настраиваются те параметры, которые можно на графическом экране найти в меню Сервис->Параметры автозамены. Влияют эти настройки на автоматическое исправление текста, вводимого пользователем (вручную). Можно использовать для единообразного написания названия фирмы и прочих элементов, которые у пользователей часто получаются разными, но чаще всего этот объект используется для отключения автозамены, поскольку это может мешать пользователям.

Объект Language, работа с установленными языками в Word из VBA

Эти коллекции представляют языки, которые знает данная версия Word и умеет с ними работать (самое ценное — словари для проверки орфографии и грамматики нужно устанавливать отдельно или пользоваться локализованной версией Word).

Объекты Word.Font и Word.ParagraphFormat, программное изменение оформления документа Word средствами VBA

Эти объекты ответственны за форматирование, соответственно, участков текста и абзацев. Свойства объекта Font позволяют определить все параметры, которые доступны через меню Формат -> Шрифт, а свойства объекта ParagraphFormat — то, что доступно через Формат -> Абзац. Объект Font можно получить через свойство Font, которое есть, в частности, у объектов Selection, Range и Find, а объект ParagraphFormat — через свойство Format, которое есть у объектов Paragraph (для одного абзаца) и коллекции Paragraphs (для нескольких абзацев).

Объект Word.PageSetup, программная настройка параметров страницы перед печатью средствами VBA

Если в вашем приложении используется печать, чаще всего без использования этого объекта не обойтись. Он позволяет программным образом настроить то, что на графическом экране настраивается через меню Файл->Параметры страницы. Объект PageSetup является вложенным в объекты Document, Selection и Range, и обычно обращение к нему происходит через эти объекты.

Тема 2.7 Объектная модель компонентов MS Office. Библиотеки типов

На внутреннем уровне пакет MS Office представлен в виде совокупности взаимодействующих объектов. Каждый из них наделен специфичным набором свойств и методов. Совокупность объектов и связей между ними называется объектной моделью. Любое приложение MS Office имеет свою объектную модель. В виде объектов представлены все доступные разработчику элементы офисных программ вплоть до приложения как такового (объект Application). Знание структуры объектных моделей Office позволяет создавать профессиональные приложения, выполняющие необходимую обработку данных и подготовку документов. Компоненты объектной модели каждого приложения Microsoft Office – объекты и семейства – размещаются в одноименных библиотеках (файлы с расширением .old). Существуют стандартная библиотека объектов VBA и стандартная библиотека Office, библиотеки объектов Word, Excel, Access и прочие объектные библиотеки, предоставляющие различные функциональные возможности.

Чтобы просмотреть список объектных библиотек, доступных в конкретном приложении Microsoft Office (например, в Word), необходимо в редакторе VBA выбрать команду меню «Вид/Просмотр Объектов» и раскрыть список «Project/Library». На рис. 6 показан раскрытый список объектных библиотек, доступных в Microsoft Word.

Рисунок 6. Список объектных библиотек, доступных в Microsoft Word

Коротко охарактеризуем эти библиотеки.

Word – библиотека, задающая основу документов Word. Здесь хранится класс, задающий корневой объект Word.Application, классы объектов, вложенных в корневой объект.

Office – библиотека объектов, общих для всех приложений Microsoft Office. Здесь находятся CommandBar – классы, определяющие инструментальные панели, и классы других общих объектов. Здесь же находятся классы, задающие «помощник» (объект Assistant) и все классы, связанные с ним. Stdole – библиотека классов, позволяющая работать с ActiveX-объектами (OLE-объектами) и функциями OLE-автоматизации (OLE-Automation).

VBA – библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection, Err и прочие.

Project – проект по умолчанию, связанный с документом. Классы, которые могут программистом создаваться в этом проекте, методы, свойства – все это доступно для просмотра так же, как и объекты классов, встроенных в стандартные библиотеки.

Normal – проект, доступный для всех документов Word. Здесь могут храниться функции и классы, используемые всеми документами Word.

Библиотека VBA. Объекты общего назначения

Коллекции VBA

Коллекции VBA — это упорядоченные наборы элементов, представляющие собой единое целое. Любая коллекция VBA — экземпляр класса Collection. Все элементы коллекции (члены) представлены ссылками на фактические объекты. Это позволяет объединять в коллекцию данные различных типов. Коллекция — это списочная структура, поддерживающая операции создания коллекции как таковой, добавления и удаления элементов, получения элемента по его индексу.

В коллекцию можно добавлять элементы методом Add, удалять ранее добавленные элементы методом Remove и обращаться к элементам методом Item, в т.ч. и итеративно, например с использованием инструкции For Each. Next. В качестве примера приведем коллекцию UserForms, элементами которой являются все загруженные формы UserForm приложения. Как и все коллекции, UserForms имеет свойства Count и Item, а также метод Add. Свойство Count возвращает количество загруженных форм. Свойство Item возвращает определенный компонент коллекции, т.е. форму. Метод Add добавляет в коллекцию новую форму. Еще один пример — набор всех элементов управления, размещенных на пользовательской форме UserForm, представляемый коллекцией Controls. Фрагмент кода, приведенный в листинге 27, устанавливает значение свойства Visible каждого элемента коллекции Controls в False (делает элемент невидимым на форме):

Листинг 27. Использование коллекций

Объект Debug

Объект Debug направляет вывод приложения в окно отладки (Immediate) во время выполнения. Этот объект был использован в ряде предыдущих примеров. Объект Debug поддерживает 2 метода:

  • Print — безусловный вывод указанного выражения в окно отладки;
  • Assert — вывод по заданному условию.

Объект Err

Объект Err — содержит информацию об ошибках времени выполнения. Ошибки такого рода генерируются системными функциями VBA, либо программистом в коде программы. При возникновении ошибки времени выполнения (run-time error), свойства объекта Err принимают значения, уникальным образом идентифицирующие эту ошибку и используемые для ее обработки.

Для генерации ошибки программным путем используется метод Raise. Этот метод, совместно с командой Error, используется для генерации системных ошибок в модулях классов. В прочих программных модулях этот метод позволяет генерировать пользовательские ошибки. Основное свойство этого объекта — код ошибки (Number).

Все свойства объекта Err сбрасываются при выходе из подпрограммы, вызвавшей ошибку, кроме случаев, когда инструкция Resume (инструкция передачи управления после обработки ошибки) находится вне блока обработки.

Метод Clear используется для принудительного сброса свойств объекта Err. Пример использования объекта Err приведен на рис. 7.

Рис. 7. Пример использования объекта Err

Объектная модель Excel

Объект Workbook

Листинг 27. Программирование объектов рабочей книги

Ссылка на основную публикацию
Adblock
detector