Объект Word.Application

Лекция 10. Тема: Методы и свойства объектов Microsoft Word.

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

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

 объект Application;

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

 объект Selection;

 объект Range;

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

Рис. 10.1. Главные объекты Word

Как работать с объектом Application

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

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

Dim oWord As New Word.Application

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

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

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

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

oWord.Visible = True

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

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

Dim oWord As New Word.Application

oWord.Visible = True

oWord.Documents.Add

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

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

Однако на практике, кроме очень специальных случаев (активизация объектов OLE), такой подход по сравнению с открытием нового экземпляра 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), для которого можно выбрать события и добавлять код в событийные процедуры точно так же, как мы это делали для формы и элементов управления.

10.2. Свойства, методы и события объекта Application

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

 ActiveDocument — возвращает объект активного документа в данном экземпляре Word. Это свойство используется очень активно, обычно без упоминания объекта Application, например:

ActiveDocument.Save

Свойство доступно только для чтения, поэтому чтобы сделать какойнибудь документ активным, придется вызывать для его объекта метод Activate().

 CapsLock — позволяет проверить, включен ли режим CapsLock на клавиатуре. Изменить этот режим при помощи данного свойства нельзя (только для чтения), для этого есть другие средства (связанные с использованием Windows API). Аналогично работает свойство NumLock.

 Caption — позволяет заменить текст "Microsoft Word" в заголовке окна на другой, например "Мое приложение".

 CheckLanguage — возвращает True, если Word определяет в автоматическом режиме язык, на котором производится ввод текста. Если в системе установлено несколько языков ввода, то по умолчанию автоматическая проверка установлена. При помощи этого свойства можно изменить режим работы Word.

 CustomizationContext — свойство, которое позволяет указать шаблон или документ, на который будут распространяться внесенные вами изменения в меню, панели инструментов и клавиатурные комбинации. Например, код:

CustomizationContext = NormalTemplate

говорит о том, что все изменения, которые вы будете вносить, начиная с этого момента, будут сохраняться в шаблоне Normal.dot (и, таким образом, будут применяться ко всем документам).

 Dialogs — возвращает коллекцию Dialogs, представляющую из себя все возможные диалоговые окна Word. При помощи этой "ветви" объектной модели Word вы можете открыть любое из сотен диалоговых окон Word и определить действия, которые будут предприняты при выборе пользователем тех или иных параметров в данном диалоговом окне. К сожалению, эта "ветвь" очень плохо документирована, и при использовании объектов диалоговых окон приходится заниматься самостоятельными исследованиями (при помощи макрорекордера и окна Locals), чтобы определить нужные свойства и их значения. По моему опыту, обычно бывает проще создать свою форму VBA, которая будет выполнять необходимые действия, чем заниматься такой исследовательской работой. Пример использования диалогового окна открытия файла может выглядеть так:

Dim oDlg As Dialog

Set oDlg = Application.Dialogs(wdDialogFileOpen)

If oDlg.Display = -1 Then

MsgBox "Вы выбрали файл: " & _

Appliction.Options.DefaultFilePath _ (wdCurrentFolderPath) & "\" & oDlg.Name

End If

Для диалоговых окон, которые предназначены для работы с файлами, в объекте Application предусмотрено отдельное свойство FileDialog, возвращающее одноименный объект.

 DefaultSaveFormat — определяет формат сохранения файлов Word по умолчанию (тот, который будет предлагаться пользователь в диалоговом окне Save As). Можно настроить на сохранение в формате обычного текста TXT, текста Unicode, RTF и т. п.

 DisplayAlerts — очень важное свойство. Оно позволяет подавить вывод ошибок и диалоговых окон при работе макросов и приложений VBA. Во многих ситуациях без него не обойтись. Особенно часто прибегать к этому свойству требуется, когда в ходе работы программы необходимо что-нибудь удалить или закрыть без сохранения.

 DisplayAutoCompleteTips — включает или отключает подсказки для автозавершения текста. Чаще всего необходимо отключить.

 Documents — самое важное свойство. Возвращает коллекцию документов.

 FeatureInstall — еще одно свойство, которое позволяет не раздражать пользователя попытками Office доустановить еще не установленные компоненты. Для этого нужно установить это свойство в значение msoFeatureInstallNone.

 FileDialog — возвращает объект FileDialog, т. е. окно выбора файла, каталога, открытия файла или сохранения. Для открытия этого окна необходимо воспользоваться методом Show() этого объекта.

 FileSearch — возвращает объект FileSearch, который может использоваться для поиска файлов по определенным параметрам.

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

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

 KeyBindings — очень удобное во многих ситуациях свойство. Оно возвращает коллекцию KeyBindings — привязок клавиатурных комбинаций. Проще говоря, при помощи этого объекта и его подобъектов вы можете назначить любую команду Word или любой макрос любому сочетанию клавиш (в том числе и тем, которые уже заняты служебными командами, например <Alt>+<F4>). Общая последовательность действий при этом выглядит так:

• определяем свойство CustomizationContext объекта Application, т. е. где будут сохраняться наши изменения: в шаблоне Normal.dot, в текущем документе или в шаблоне, прикрепленном к текущему документу;

• при помощи метода Application.BuildKeyCode() определяем цифровой код для нашей клавиатурной комбинации;

• при помощи метода KeyBindings.Add() добавляем новое назначение, при этом определяем все необходимые параметры.

Например, чтобы по нажатию клавиш <Alt>+<D> у нас запускался макрос DataLoad() во всех документах, можно выполнить следующий код:

CustomizationContext = NormalTemplate

Application.KeyBindings.Add wdKeyCategoryMacro, _

"Normal.NewMacros.DataLoad", BuildKeyCode(wdKeyAlt, wdKeyD)

 Language — еще одно свойство, которое позволяет определить, установлена ли на компьютере пользователя локализованная версия Word (точнее, это свойство определяет язык пользовательского интерфейса). Для русского языка будет возвращаться значение 1049, для английского — 1033. Более подробную информацию (о языке помощи, языке программы установки и т. п.) можно получить при помощи свойства LanguageSettings.

 MacroContainer — очень полезное свойство для программистов. Позволяет в ходе выполнения макроса определить, откуда был запущен текущий программный код (обычно проверяются два варианта — Normal.dot или текущий документ).

 NewDocument — одна из возможностей создать новый документ Word. Возвращает объект NewDocument. Для создания нового документа используется метод Application.NewDocument.Add().

 NormalTemplate — это свойство позволяет получить ссылку на объект Template, представляющий Normal.dot, для внесения в него изменений.

 Option — возвращает объект Option с огромным количеством свойств. Через этот объект программным способом можно настроить значения на всех вкладках окна Параметры (меню Сервис | Параметры).

 Path — возвращает путь к программным файлам Word на диске.

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

 Selection — еще одно важнейшее свойство. Возвращает объект Selection — то место, в котором находится указатель вставки.

 ShowStartupDialog — определяет, показывать или нет Task Panel (панель задач в правой части документа) при запуске Word. Чаще всего используется для отключения показа. Есть еще несколько свойств с префиксом Show..., значения которых очевидны.

 SpecialMode — позволяет проверить, не находится ли Word в специальном режиме копирования и вставки (для перехода в этот режим нужно выделить текст и нажать <F2> или <Shift>+<F2>, а потом переместить курсор и нажать <Enter>).

 StatusBar — еще одно очень полезное свойство. Позволяет вывести текст в Status Bar (строка состояния), т. е. в строке в нижней части окна приложения, где выводится информация о страницах, столбцах, языке, режимах работы и т. п.

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

 Tasks — возвращает одноименную коллекцию Tasks с объектами Task, представляющими все работающие в системе процессы. При помощи этих объектов можно программным способом найти работающее в системе приложение и чтонибудь с ним сделать (сделать видимым или невидимым, активизировать, закрыть, передать в его окно сообщение Windows, как при работе с Windows API и т. п.). Опытные разработчики активно используют этот набор объектов для работы с внешними приложениями. Запускать внешние приложения лучше всего при помощи специального объекта Shell.

 UserControl — очень важное свойство (оно есть и в Excel). Это свойство позволяет определить, как именно был запущен Word — пользователем вручную или программным образом. На основе этого можно, например, сделать вывод, нужно ли его программным образом закрывать.

 Visible — позволяет спрятать окно Microsoft Word очень качественно — Word исчезает и c рабочего стола, и из панели задач.

 Windows — возвращает информацию об одноименной коллекции Windows, содержащей объекты Window. Эти объекты представляют окна документов Word.

 WindowsState — позволяет свернуть, развернуть или восстановить окно Word.

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

Самые важные методы объекта Application приведены далее.

 Activate() — просто активизирует окно Word с текущим документом. Обычно нужно активизировать определенный документ, поэтому этот метод используется для объекта Document.

 CheckGrammar() и CheckSpelling() — позволяют проверить грамматику и орфографию для передаваемых символьных значений. Чаще всего используются аналогичные методы для объектов Document и Range.

 CleanString() — очень полезный метод. Позволяет "чистить" передаваемое символьное значение (полученное, например, от объектов Selection или Range) от специальных символов Word и превращает их в обычный текст, как будто он был набран в блокноте.

 GoBack() — этот метод обеспечивает переход на последнее место редактирования в документе. Word сохраняет с документом три последние точки редактирования, так что открыть последний документ в Word и перейти на точку, где вы остановились, можно очень просто:

RecentFiles(1).Open

Application.GoBack

 GoForward() — обеспечивает переход вперед по точкам сохранения.

 KeyBoard() — очень полезный метод. Позволяет программным способом переключать раскладку клавиатуры в Word, уберегая таким образом пользователей от ошибок. Переключение на русский язык выглядит так:

Application.Keyboard 1049

а на английский:

Application.Keyboard 1033

Если этому методу ничего не передавать, он вернет текущую раскладку клавиатуры.

 KeyString() — метод, обратный BuildKeyCode(). Если BuildKeyCode() возвращает уникальный идентификатор клавиатурной комбинации, то этот метод возвращает клавиатурную комбинацию для данного уникального идентификатора.

 ListCommands() — метод, не похожий на другие. Он создает новый документ и выводит в нем в виде таблицы справочник по методам и клавиатурным комбинациям Word, как стандартным, так и назначенным вами.

 OnTime() — очень интересный метод. Он позволяет выполнить макрос Word либо в указанное вами время, либо по прошествии какого-то времени. В Word одновременно может работать только один таймер. При помощи этого метода можно выполнять ресурсоемкие операции в автоматическом режиме.

 OrganizerCopy() — еще один полезный метод. Позволяет скопировать макрос, панель инструментов, запись автотекста или стиль из одного документа в другой. Для удаления и переименования этих элементов предусмотрены методы OrganizerDelete() и OrganizerRename().

 PrintOut() — метод, который принимает огромное количество параметров (все необязательные) и позволяет вывести на печать весь документ или его часть. Может использоваться для объектов Application, Document и Window.

 Quit() — метод, который используется, видимо, чаще всех. Позволяет закрыть Word с сохранением или без сохранения документов.

 Repeat() — просто повторяет последнюю выполненную команду указанное вами количество раз.

 ResetIgnoreAll() — снять метку со всех фрагментов текста, помеченных как "без проверки" в ходе проверки орфографии.

 Run() — еще один очень важный метод. Позволяет запустить процедуру/макрос из открытого шаблона или документа с передачей параметров.

 ScreenRefresh() — обновляет окно приложения. Обычно используется после того, как автоматическое обновление было отключено при помощи свойства ScreenUpdating.

 ShowClipboard() — отображает панель буфера обмена Word (если вы работаете с несколькими буферами).

Остальные методы относятся к работе протокола DDE, преобразованию различных единиц измерений и т. п.

У объекта Application есть множество событий: открытие, закрытие, сохранение и печать документа, щелчки мышью, активизация, выход из приложения и т. п. Единственное, что следует еще раз отметить — события объекта Application по умолчанию не отображаются в редакторе Visual Basic. Чтобы они появились, в раздел Declarations нужно поместить следующую строку кода:

Public WithEvents App As Word.Application

В этом случае в списке объектов в окне редактора кода для форм появится объект App со всеми необходимыми событиями.

10.4. Коллекция Documents и объекты Document

Как работать с коллекцией Documents

На одну ступень ниже объекта Application в объектной модели Word (и по логике использования в приложениях) находятся коллекция Documents и объекты Document, из которых она состоит. При программировании в Word без них обычно не обойтись.

Чаще всего в программах нам нужно:

1. Запустить Word.

2. Создать или открыть документ.

3. Что-то с этим документом сделать (например, впечатать в нужные места этого документа значения, полученные из базы данных или от пользователя).

Запуск Word производится при помощи объекта Application, с которым вы уже знакомы. Для выполнения различных действий с документом используются объекты Selection, Range и Bookmark. А вот второй пункт — создание или открытие документа, проверка, открыт уже документ или нет, сохранение документа и т. п. — реализуется при помощи коллекции Documents и объекта Document.

Самый простой вариант создания документа выглядит так:

Dim oDoc As Word.Document

Set oDoc = Application.Documents.Add()

При этом мы создали обычный пустой документ (на основе шаблона Normal.dot) и получили ссылку на него в объектную переменную oDoc. Далее в документ можно программно вводить нужную нам информацию.

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

Например, в нашей ситуации нам вначале нужно набрать текст договора, оставив пустые места для изменяемых данных, и сохранить его с расширением dot (предположим, что он сохранен на диске C: с именем dog_blank.dot). Тогда создать документ на основе этого шаблона можно так:

Dim oDoc As Word.Document

Set oDoc = Application.Documents.Add_ ("C:\dog_blank.dot")

А далее при помощи объектов Bookmark и Range вводим текст в оставленные пустые места.

Часто возникает потребность программным способом не создавать новый документ, а открыть уже имеющийся и что-то сделать с ним. Открыть документ проще всего при помощи метода Open() коллекции Documents. Самый простой вариант применения этого метода выглядит так:

Dim oDoc1 As Word.Document

Set oDoc1 = Documents.Open("c:\doc1.doc")

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

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

Сохранять документы лучше при помощи методов Save() и SaveAs() объекта Document. В коллекции Documents есть также свой метод Save(), который позволяет сохранить сразу все открытые документы Word, но обычно это менее удобно.

Заметим, что из Word можно открывать не только документы Word разных версий, но и документы десятков других различных форматов, про которые знает Word — TXT, HTML, XML и т. п. Сохранять файлы также можно в одном из десятков встроенных форматов или использовать свой собственный пользовательский формат (при помощи объекта FileConvertor). За счет этого программным образом при помощи макросов можно очень удобно преобразовывать большое количество документов, которые могут находиться, например, в разных каталогах на файловых серверах, или в общих папках Exchange Server, или в базе данных SharePoint Portal Server. Для прохода по дереву каталогов удобнее всего использовать объект FileSystemObject из библиотеки Microsoft Scripting Runtime, которая есть на любом компьютере Windows.

Свойства и методы коллекции Documents

Коллекция Documents, как уже говорилось ранее, представляет все документы Word, открытые в настоящий момент. Нумерация документов в коллекции начинается с 1. Из свойств этой коллекции интерес может представлять только свойство Count — количество открытых документов. Гораздо важнее методы коллекции Documents. Про некоторые из них мы уже говорили в предыдущем разделе, но здесь для справки приведем информацию о них еще раз.

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

Add(Template, NewTemplate, DocumentType, Visible)

Здесь Template — это шаблон для создания нового документа, NewTemplate (True/False) — делать ли новый документ шаблоном, DocumentType — тип документа, может принимать значения: wdNewBlankDocument, wdNewEmail-Message, wdNewFrameset или wdNewWebPage (по умолчанию новый чистый документ), Visible — будет ли новый документ видимым (по умолчанию) или невидимым. Все эти параметры являются необязательными. Если не указать ни один из них, будет просто создан новый документ на основе шаблона Normal.dot (как будто вы создали новый документ при помощи меню Файл | Создать).

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

Dim oDoc1 As Document

Set oDoc1 = Documents.Open("c:\doc1.doc")

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

Dim oDoc1 As Word.Document

For i = 1 To Documents.Count

Set oDoc1 = Documents.Item(i)

If oDoc1.Name = "doc1.doc" Then

Exit For

End If

Set oDoc1 = Nothing

Next

Этот код возвращает ссылку в виде переменной oDoc1 на документ doc1.doc, если он есть в коллекции. Если его нет, то во избежание ошибок нужно реализовывать дополнительные проверки. На практике можно было бы перед сравнением привести имя документа в нижний регистр, если учитывать регистр букв при поиске вам не нужно.

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

MsgBox Documents.Item(1).Name

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

 CanCheckOut() (можно ли "забрать" документ в монопольный доступ) и CheckOut() (забрать документ в монопольный доступ) — эти методы можно применять, если документ находится в документной библиотеке в базе данных SharePoint Portal Server.

10.5. Свойства и методы объекта Document

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

Обратите внимание, что к объекту Document можно обращаться и не создавая специальную объектную переменную. Существует еще, по крайней мере, три способа получения доступа к объекту Document:

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

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

MsgBox ThisDocument.Name

 использовать свойство ActiveDocument объекта Application. Это свойство возвращает нам объект активного документа:

MsgBox Application.ActiveDocument.Name

или просто

MsgBox ActiveDocument.Name

Самые важные свойства объекта Document представлены далее.

 ActiveWritingStyle — текущий активный стиль (заголовок определенного уровня, обычный текст, гиперссылка и т. п.). Рекомендуется проверять это свойство перед вводом текста.

 Background — возвращает объект Shape, представляющий фоновый рисунок (фоновые рисунки видны только в режиме Web-документ).

 BuiltInDocumentProperties — позволяет получить ссылку на коллекцию DocumentProperties с одноименными объектами, представляющими встроенные свойства документа (название, автор, категория, комментарии и т. п.);

 Characters — возвращает коллекцию объектов Range, каждый из которых представляет один символ. Это свойство есть не только у объекта Document, но и у объектов Selection и Range. Может использоваться, например, для выполнения операция поиска и замены или статистических подсчетов (например, если переводчику платят за количество символов);

 Content — свойство, возвращающее объект Range, представляющий собой главную цепочку документа (main document story). Если говорить проще, то это просто текст документа, без колонтитулов, сносок, комментариев и т. п.

 CustomDocumentsProperty — свойство, возвращающее коллекцию объектов DocumentProperties, представляющих пользовательские свойства документа. Можно использовать для сохранения вместе с документом любых значений переменных. Очень удобно, например, для подсчета количества открытий документа, флажков печатался/не печатался, сколько раз вызывалась та или иная функция, на каких компьютерах и каким пользователем открывался и т. п.

 Fields — позволяет получить ссылку на коллекцию Fields одноименных объектов. Это свойство очень полезно при работе с полями. Поле в Word — это место в документе, отведенное для подстановки изменяемых данных: формул, даты, информации об авторе, размере документа и т. п. При работе с документом Word средствами обычного графического интерфейса добавить новое поле можно при помощи меню Вставка | Поле.

 Footnotes — возвращает коллекцию сносок.

 Свойства с префиксом Formatting... — определяют, что показывать в списке стилей панели инструментов Форматирование.

 FormFields — аналогично Fields, но в этом случае возвращается ссылка на поля в формах.

 FullName — возвращает полное имя объекта (вместе с путем к нему в файловой системе или Web). Доступно только для чтения.

 GrammarChecked — помечает весь документ, как проверенный с точки зрения грамматики (фактически отключает проверку грамматики для данного документа). Такое же свойство существует и у объекта Range. Коллекцию ошибок, выловленных при проверке грамматики, можно получить при помощи свойства GrammaticalErrors, а выделить ошибки зеленым волнистым подчеркиванием (если этого не сделано) — при помощи свойства ShowGrammaticalErrors. Для орфографических ошибок существуют аналогичные свойства SpellingChecked, SpellingErrors и ShowSpellingErrors.

 HasPassword — проверяет, назначен ли пароль для указанного документа. Другое свойство Password назначает пароль. По причине крайней слабости защиты пароли в Word, Excel и Access использовать не рекомендуется.

 Indexes — возвращает коллекцию индексов (т. е. предметных указателей) для документа.

 Name — имя документа (без пути к нему).

 OpenEncoding — возвращает кодовую страницу, которая использовалась для открытия документа. Для русского языка по умолчанию это 1251.

 PageSetup — позволяет получить ссылку на одноименный объект. Используется в основном при реализации печати.

 Paragraphs — возвращает ссылку на коллекцию абзацев в данном документе.

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

 Saved — очень важное свойство. Позволяет определить, изменялся ли документ со времени последнего сохранения.

 SaveEncoding — позволяет явно указать (или получить) кодировку, которая будет использоваться при сохранении документа.

 SaveFormat — позволяет получить информацию о формате документа (DOC, RTF, TXT, HTML и т. п.). Доступно только для чтения.

 Sections — возвращает коллекцию разделов документа. Sentences — то же самое для предложений. Аналогично работают свойства Shapes, Styles, Subdocuments, Tables, Windows и Words.

 Type — возвращает тип документа (обычный, шаблон или Web-страница с фреймами).

 Variables — еще одно очень удобное свойство. Можно использовать для сохранения своих служебных данных вместе с документом, как и пользовательские атрибуты (custom attributes), но, в отличие от пользовательских атрибутов документа, пользователям эти свойства не будут видны.

Теперь рассмотрим самые важные методы объекта Document.

 Activate() — этот метод позволяет сделать указанный вами документ активным (например, для ввода текста).

 AddToFavorities() — позволяет добавить ссылку на документ в каталог Избранное. Может быть полезным, если пользователь будет работать с этим документом постоянно.

 CheckSpelling() и CheckGrammar() — запускают проверку орфографии и грамматики соответственно.

 Close() — закрывает документ. Можно закрыть с сохранением (по умолчанию), а можно без (если указать соответствующий параметр).

 Compare() — сравнивает документ с другим и генерирует редакторские пометки в местах, где обнаружены различия.

 DetectLanguage() — определяет язык текста. Проверка производится по предложениям, на основе сверки слов со встроенными словарями. Такая проверка производится автоматически во время ввода текста или при открытии нового документа. Чтобы заново провести проверку языков, свойство LanguageDetected нужно перевести в False.

 FitToPages() — очень интересный метод. Размер шрифта автоматически меняется таким образом, чтобы текст стал занимать на одну страницу меньше. Можно использовать для устранения "висячих страниц" и других проблем верстки.

 FollowHyperlink() — открывает указанный вами документ в соответствующем приложении (если HTML, то в Internet Explorer).

 GoTo() — очень мощный метод. Для объектов Document и Range он возвращает объект Range, для объекта Selection — просто перемещает указатель ввода текста на нужное место. Возвращаемые объекты в зависимости от параметров, которые были переданы этому методу, могут указывать на начало страницы, на определенные строки, закладки, комментарии, таблицы, секции, поля, ссылки, формулы и т. п. Может переходить на определенный номер такого элемента в документе, первый, последний, следующий и т. п. Очень удобно использовать для установки указателя в нужное место для автоматического ввода текста.

 Merge() — позволяет произвести слияние двух документов. Метод очень сложный и мощный, основывается на применении редакторских пометок.

 PresentIt() — открывает данный документ в PowerPoint.

 PrintOut() — очень сложный метод, который позволяет вывести на печать весь документ или его часть.

 PrintPreview() — переводит документ в режим предварительного просмотра.

 Protect() — ограничивает внесения изменений в документ при помощи пароля или нового средства управления правами на доступ к данным, которое называется IRM. Те же возможности на графическом экране доступны через меню Файл | Разрешения.

 Range() — очень важный метод. Возвращает объект Range, принимает в качестве параметров номер начального символа диапазона и номер конечного символа.

 Redo() — повторяет последнее действие. В качестве параметра принимает количество последних действий, возвращает True, если повтор был произведен успешно.

 Repaginate() — выполняет переразбивку документа на страницы. Обычно используется, если автоматическая разбивка была ранее отключена (например, на вкладке Общие диалогового окна Параметры (меню Сервис | Параметры) или программно при помощи объекта Options).

 Save() — смысл этого метода очевиден. Если документ ранее не сохранялся, открывается диалоговое окно Сохранить как.

 SaveAs() — очень мощный и сложный метод. Можно определить путь для сохраняемого документа, его формат, кодировку, пароли на открытие и изменение документа, вставку шрифтов и многое другое. Очень удобно использовать, например, для автоматической конвертации документов.

 Select() — позволяет просто выделить весь документ. Этот метод существует для очень большого количества объектов, в том числе для Selection и Range.

 TransformDocument() — исключительно мощный метод, но только для программистов, которые хорошо разбираются в XML и XSLT. Позволяет применить к документу таблицу преобразований стилей (Extensible Stylesheet Language Transformation, XSLT), при помощи которой можно поменять все, что угодно.

 Undo() — отменяет определенное количество последних действий. По синтаксису и принципам работы — полный аналог метода Redo().

 UndoClear() — очищает буфер отмены изменений, чтобы пользователь не смог откатить произведенные действия.

 UnProtect() — снимает защиту с документа (определенную методом Protect() или в графическом интерфейсе). Может быть очень полезным перед программным внесением изменений в защищенный документ.

Часто используемых событий у объекта Document всего три: New (можно определить только для шаблона, срабатывает, когда на основе этого шаблона создается новый документ), Open и Close. Все эти события очевидны и изначально доступны в окне редактора кода Visual Basic.

10.6. Материал для самостоятельного изучения.

Свойства объекта Word.Application.

 ActivePrinter — позволяет получить или настроить активный принтер в ходе работы программы. Также используется очень активно, например, если результаты работы вашего приложения необходимо печатать на определенном сетевом принтере. Свойство доступно как для чтения, так и для записи.

 AutomationSecurity — определяет уровень безопасности при программном открытии файлов. По умолчанию установлено значение msoAutomationSecurityLow — открывать с включенными макросами. Можно также использовать значения msoAutomationSecurityForceDisable (отключить макросы) и msoAutomationSecurityByUI (то, что настроено на графическом интерфейсе).

 BackgroundPrintingStatus — определяет, сколько заданий Word стоит в очереди на печать.

 Browser — свойство, которое возвращает объект Browser (малозаметный набор из трех кнопок, который прячется под вертикальной полосой прокрутки). С программной точки зрения интересно его свойство Target, которое может принимать одно из 12 значений (комментарий, сноска, таблица, рисунок, заголовок, страница и т. п.). Затем при помощи методов Next() и Previous() для этого объекта мы можем перемещаться между этими элементами.

 Build — возвращает версию и номер сборки Word. Очень полезно для проверки на совместимость, если ваше приложение работает только под определенными версиями Word.

 COMAdIns — позволяет получить ссылку на коллекцию загруженных COM Addins — встраиваемых в Word приложений, построенных по технологии COM. Очень удобно использовать перед обращением к данному встраиваемому приложению.

 EmailOptions — возвращает очень сложный и насыщенный свойствами объект EmailOptions, который используется для настройки Word как редактора почтовых сообщений Outlook.

 EnableCancelKey — это свойство определяет, сможет ли пользователь прервать выполнение любого макроса при нажатии клавиш <Ctrl>+<Break>. Если установить для этого свойства значение wdCancelDisabled, то это приведет к тому, что макрос, вошедший в бесконечный цикл, можно будет закрыть только вместе с Word — через Task Manager.

 StartUpPath — предоставляет возможность просмотреть/определить путь к каталогу автозапуска. Те шаблоны и встраиваемые приложения, которые находятся в этом каталоге, Word при запуске открывает автоматически. По умолчанию каталог автозапуска находится в профиле пользователя. Путь к нему выглядит как \application data\Microsoft\Word\startup.

 UserInitials и UserName — позволяет получить или определить информацию об инициалах или имени пользователя. Инициалы используются в исправлениях, а имя пользователя — в свойствах документа.

 VBE — это свойство возвращает недокументированный, но очень интересный объект VBE, представляющий редактор Visual Basic. Обычно используется для программного внесения изменений в проекты VBA, например, добавление ссылок.

 Version — свойство возвращает версию Word (менее подробную, чем свойство Build). Для Word 2003 значение этого свойства равно 11.0.

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

 BuildKeyCode() — позволяет узнать уникальный номер для клавиатурной комбинации в Word. Пример использования этого метода был приведен ранее при рассмотрении свойства Application.KeyBindings.

 ChangeFileOpenDirectory() — этот метод позволяет изменить каталог, который по умолчанию открывает Word при работе с документами (по умолчанию задан, конечно, каталог Мои документы);

 DefaultWebOptions() — возвращает одноименный объект, при помощи которого можно определить множество свойств, используемых при сохранении документа Word в формате HTML (кодировка, работа с изображениями, CSS, с какими браузерами обеспечивать совместимость и т. п.).

Объект Document, основные свойства и методы.

 AttachedTemplate — предоставляет возможность подключить шаблон (со всеми макросами, стилями, записями автотекста и т. п.) или проверить, какой шаблон подключен (вручную это можно сделать через меню Сервис | Шаблоны и надстройки).

 DefaultTabStop — определяет отступ по умолчанию при использовании символа табуляции. По умолчанию задано 35 пунктов, что равно примерно 1,25 см.

 DisableFeatures — отключает возможности, которые понимают только последние версии Word (для совместимости с пользователями, у которых на компьютерах стоят старые версии). Обычно само свойство DisableFeatures просто включает такой режим, а конкретный уровень совместимости задается при помощи свойства DisableFeaturesIntroducedAfter.

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

 EmbedTrueTypeFonts — очень полезное свойство, если вы работаете с документом в месте, где используются экзотические шрифты (например, в издательстве). Вставка шрифтов truetype гарантирует, что получатели документа будут видеть его точно таким же, как и создатель.

 Envelope — позволяет получить ссылку на специальный объект Envelope, который используется для создания почтовых конвертов.

 Permission — позволяет получить доступ к объекту Permission, который управляет системой внутренних разрешений документа Word (но не разрешений файловой системы).

 PrintRevisions — определяет печатать или нет пометки редактора (исправления) вместе с документом. По умолчанию — печатать.

 ProtectionType — проверяет защиту данного документа (разрешено все, или только комментарии, чтение, изменения в полях форм и т. п.). Сама защита устанавливается при помощи метода Protect().

 ReadOnly — определяет, можно ли вносить изменения в документ или он доступен только для чтения. Это свойство само доступно только для чтения, поскольку соответствующий атрибут устанавливается в файловой системе.

 RemoveDateAndTime и RemovePersonalInformation — удаляют информацию о дате и времени произведенных изменений и всю информацию о пользователе из документа (включая свойства документа). Могут быть полезными при создании файлаобразца.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: