11.3.2 Свойства, методы и события объекта Application
Объект Application, свойства, методы и события
Ниже для справки приведены самые важные свойства, методы и события объекта Application:
- ActiveDocument — возвращает объект активного документа в данном экземпляре Word. Используется очень активно, обычно без упоминания объекта Application, например:
- ActiveDocument.Save
Это свойство доступно только для чтения, поэтому, чтобы сделать какой-нибудь документ активным, придется вызывать для его объекта метод Activate().
- ActivePrinter — позволяет получить или настроить активный принтер в ходе работы программы. Также используется очень активно, например, если результаты работы вашего приложения необходимо печатать на определенном сетевом принтере.
- AutomationSecurity — определяет уровень безопасности при программном открытии файлов. По умолчанию установлено значение msoAutomationSecurityLow, что значит — открывать со включенными макросами. Можно также использовать значения msoAutomationSecurityForceDisable — отключить макросы и msoAutomationSecurityByUI — то, что настроено на графическом интерфейсе.
- BackgroundPrintingStatus — сколько заданий Word стоит в очереди на печать.
- Browser — свойство, которое возвращает объект Browser — тот малозаметный набор из трех кнопок, который прячется под вертикальной полосой прокрутки. С программной точки зрения интересно его свойство Target, которое может принимать одно из 12 значений (комментарий, сноска, таблица, рисунок, заголовок, страница и т.п.). Затем при помощи методов Next() и Previous() для этого объекта мы можем перемещаться между этими элементами.
- Build — возвращает версию и номер сборки Word. Очень полезно для проверки на совместимость, если ваше приложение работает только под определенными версиями Word.
- CapsLock — при помощи этого свойства можно проверить, включен ли режим CapsLock на клавиатуре. Изменить этот режим при помощи этого свойства нельзя — для этого есть другие средства. Аналогично работает свойство NumLock.
- Caption — позволяет заменить слово Microsoft Word в заголовке окна на другой текст, например, "Мое приложение".
- CheckLanguage — определяет ли Word в автоматическом режиме язык, на котором производится ввод текста. Если в системе установлено несколько языков ввода, то по умолчанию проверяет. При помощи этого свойства можно изменить режим работы Word.
- COMAdIns — позволяет получить ссылку на коллекцию загруженных COM Ad ins — встраиваемых в Word приложений, построенных по технологии COM. Очень удобно для проверок перед обращением к данному встраиваемому приложению.
- 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 "Вы выбрали файл: " & _
Application.Options.DefaultFilePath(wdCurrentFolderPath) & "\" & oDlg.Name
End If
Для диалоговых окон, которые предназначены для работы с файлами, в объекте Application предусмотрено отдельное свойство FileDialog, возвращающее одноименный объект.
- DefaultSaveFormat — определяет формат сохранения файлов Word по умолчанию (тот, который будет предлагаться пользователь в диалоговых окнах Save As). Можно настроить на сохранение в формате обычного текста, текста Unicode, RTF и т.п.
- DisplayAlerts — очень важное свойство. Оно позволяет подавить вывод ошибок и диалоговых окон при работе макросов и приложений VBA. Во многих ситуациях без него не обойтись. Особенно часто прибегать к этому свойству требуется, когда необходимо в ходе работы программы что-нибудь удалить или закрыть без сохранения.
- DisplayAutoCompleteTips — включить/отключить подсказки для автозавершения текста. Чаще всего необходимо отключить. Остальные свойства Display… очевидны и поэтому здесь рассматриваться не будут.
- Documents — видимо, самое важное свойство. Возвращает коллекцию документов. Подробнее про эту коллекцию и работу с документами — ниже.
- EmailOptions — возвращает очень сложный и насыщенный свойствами объект EmailOptions, который используется для настройки Word как редактора почтовых сообщений в Outlook.
- EnableCancelKey — это свойство определяет, сможет ли пользователь прервать выполнение макроса при нажатии клавиш <Ctrl>+<Break>. Если установить для этого свойства значение WdCancelDisabled, то это приведет к тому, что макрос, вошедших в бесконечный цикл, можно будет закрыть только вместе с Word — через Task Manager.
- FeatureInstall — еще одно свойство, которое позволит не раздражать пользователя попытками Office доустановить еще не установленные компоненты. Для этого нужно установить это свойство в значение msoFeatureInstallNone.
- FileDialog — возвращает объект FileDialog, то есть окно выбора файла, каталога, открытия файла или сохранения. Для открытия этого окна необходимо воспользоваться методом Show() этого объекта.
- FileSearch — возвращает объект FileSearch, который может использоваться для поиска файлов по определенным параметрам.
- International — еще одно очень важное свойство. Возвращает информацию о текущих региональных настройках — даты, времени, валюты, отображения чисел, локализации версии Word и т.п.
- IsObjectValid — очень удобное свойство для всевозможных проверок. Проверяет, существует ли еще объект, к которому мы хотим обратиться. Позволяет уберечься от ошибок, когда, к примеру, документ или объект в документе был удален пользователем.
- KeyBindings — очень удобное во многих ситуациях свойство. Оно позволяет вернуть коллекцию KeyBindings — привязок клавиатурных комбинаций. Говоря проще, при помощи этого объекта и подобъектов вы можете назначить любую команду Word или любой макрос любому сочетанию клавиш (в том числе и сочетаниям, уже занятым служебными командами, например, <Alt>+<F4>). Общая последовательность действий при этом выглядит так:
- определяем CustomizationContext — то есть где будут сохраняться наши изменения. Варианты: шаблон 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 — перейти в режим предпросмотра текущего документа или проверить, находимся ли мы в этом режиме. Очень удобно для показа документа пользователю или для реализации своей процедуры печати.
- ScreenUpdating — свойство, которое позволяет запретить перерисовку экрана (если установить его значение в false). Обычно используется для ускорения работы процедур, которые выводят что-то на экран.
- Selection — еще одно важнейшее свойство. Возвращает объект Selection — упрощенно говоря, место, в котором находится указатель вставки. Подробнее о нем — в следующих разделах.
- ShowStartupDialog — показывать ли нет Task Pane при запуске Word. Чаще всего используется для отключения показа. Есть еще несколько свойств Show…, значения которых очевидны.
- SpecialMode — проверить, не находится ли Word в специальном режиме копирования и вставки (для перехода в этот режим нужно выделить текст и нажать <F2> или <Shift>+<F2>), а потом переместить курсор и нажать <Enter>).
- StartUpPath — возможность просмотреть/определить путь к каталогу автозапуска. Те шаблоны и встраиваемые приложения, которые находятся в этом каталоге, Word при запуске открывает автоматически. По умолчанию каталог автозапуске находится в профиле пользователя. Путь к нему выглядит как application data\microsoft\word\startup.
- StatusBar — еще одно очень полезное свойство. Позволяет вывести текст в Status Bar — строке состояния, то есть строке в нижней части окна приложения, в которой выводится информация о страницах, столбцах, языке, режимах работы и т.п.
- System — возвращает одноименный объект System, предназначенный для получения информации из операционной системы (региональный настройки, тип курсора мыши, разрешение экрана, тип процессора и т.п.). Позволяет также подключать сетевые диски и запускать приложение Microsoft System Information.
- Tasks — возвращает одноименную коллекцию Tasks с объектами Task, представляющими все работающие в системе процессы. При помощи этих объектов можно программным способом найти работающее в системе приложение и что-нибудь с ним сделать (сделать видимым или невидимым, активизировать, закрыть, передать в его окно сообщение Windows — как при работе с Windows API и т.п.), Опытные разработчики активно используют этот набор объектов для работы с внешними приложениями. Запускать внешние приложения лучше всего при помощи специального объекта Shell, о котором будет рассказано ниже.
- UserControl — очень важное свойство (оно есть и в Excel). Это свойство позволяет определить как именно был запущен Word — пользователем вручную или программным образом. На основе этого можно, например, сделать вывод, нужно ли его программным образом закрывать.
- UserInitials и UserName — возможность получить или определить информацию об инициалах или имени пользователя. Инициалы используются в исправлениях, а имя пользователя — в свойствах документа.
- VBE — это свойство возвращает недокументированный, но очень интересный объект VBE, представляющий редактор Visual Basic.
- Version — свойство возвращает версию Word (менее подробную, чем Build). Для Word 2003 значение этого свойства — 11.0).
- Visible — позволяет спрятать окно Microsoft Word. Word убирается очень качественно — он исчезает и из рабочего стола, и из панели задач.
- Windows — возвращает информацию об одноименной коллекции Windows, представляющей объекты окон документов Word. Эта коллекция также используется очень часто.
- WindowsState — позволяет свернуть/развернуть/восстановить окно Word.
Самые важные методы объекта Application:
- Activate() — просто активизировать окно Word с текущим документом. Обычно нужно активизировать определенный документ, поэтому этот метод используется для объекта Document.
- BuildKeyCode() — позволяет узнать уникальный номер для клавиатурной комбинации в Word. Пример применения этого метода приведен чуть выше при рассмотрении свойства Application.KeyBindings.
- ChangeFileOpenDirectory() — этот метод позволяет изменить каталог, который по умолчанию открывает Word для работы с документами (по умолчанию, конечно, "Мои документы";
- CheckGrammar() и CheckSpelling() — позволяет проверить грамматику и орфографию для передаваемых символьных значений. Чаще используются аналогичные методы для объектов Document и Range.
- CleanString() — очень полезный метод. Позволяет "чистить" передаваемое символьное значение (полученное, например, от объектов Selection или Range) от специальных символов Word и превращать их в обычный текст — как будто он был набран в Блокноте.
- DefaultWebOptions() — возвращает одноименный объект, при помощи которого можно определить множество свойств, используемых при сохранении документа Word в формате HTML (кодировка, работа с изображениями, CSS, с какими броузерами обеспечивать совместимость и т.п.)
- GoBack() — этот метод обеспечивает переход на последнее место редактирования в документе. Word сохраняет с документом три последние точки редактирования, так что открыть последний документ в Word и перейти на точку, где вы остановились, можно очень просто:
RecentFiles(1).Open
Application.GoBack
Метод GoForward() обеспечивает переход вперед по точкам сохранения.
- KeyBoard() — очень полезный метод. Позволяет программным способом переключать раскладку клавиатуры в Word, уберегая таким образом пользователей от ошибок. Переключение на русский выглядит как
Application.Keyboard 1049
а на английский -
Application.Keyboard 1033
Если этому методу ничего не передавать, он вернет текущую раскладку клавиатуры.
- KeyString() — метод, обратный BuildKeyCode. Тот метод возвращал уникальный идентификатор клавиатурной комбинации, а этот — возвращает клавиатурную комбинацию для данного уникального идентификатора;
- ListCommands() — команда, не похожие на другие. Она создает новый документ и выводит в нем в виде таблицы справочник по командам и клавиатурным комбинациям Word — как стандартным, так и назначенным вами.
- OnTime() — очень интересный метод. Он позволяет выполнить макрос Word либо в указанное вами время, либо по прошествии какого-то времени. В Word одновременно может работать только один таймер. При помощи этого метода можно выполнять ресурсоемкие операции в автоматическом режиме.
- OrganizerCopy() — еще один полезный метод. Позволяет скопировать макрос, панель инструментов, запись автотекста или стиль между документами. Для объекта Application предусмотрены также методы с самообъясняющими OrganizerDelete() и OrganizerRename().
- PrintOut() — метод, который принимает огромное количество параметров и позволяет вывести на печать весь документ или его часть.
- Quit() — метод, который используется, видимо, чаще всех. Позволяет закрыть Word с сохранением или без сохранения документов.
- Repeat() — просто повторить последнюю выполненную команду указанное вами количество раз.
- ResetIgnoreAll() — снять метку со всех участков текста, помеченных как "без проверки" в ходе проверки орфографии.
- Run() — еще один очень важный метод. Позволяет запустить процедуру/макрос из открытого шаблона/документа и передать ей параметры.
- ScreenRefresh() — обновить окно приложения. Обычно используется после того, как автоматическое обновление было отключено при помощи свойства ScreenUpdating.
- ShowClipboard() — показать панель буфера обмена Word (если вы работаете с несколькими буферами).
Остальные методы относятся к работе протокола DDE, преобразованию различных единиц измерений и т.п.
У объекта Application множество событий — открытие/закрытие/сохранение/печать документа, щелчки мышью, активизация, выход из приложения и т.п. Назначение событий понятно из их названий, поэтому они здесь рассматриваться не будут. Единственное, что следует еще раз отметить — события объекта Application по умолчанию не показываются в редакторе Visual Basic. Чтобы они появились, в раздел Declarations нужно поместить следующую строку:
Public WithEvents App As Word.Application
В этом случае в списке объектов в окне редактора кода для форм появится объект App со всеми необходимыми событиями.