VBA в Word Объект Application, свойства, методы и события

          Назад



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>). Общая последовательность действий при этом выглядит так:
  1. определяем CustomizationContext — то есть где будут сохраняться наши изменения. Варианты: шаблон normal.dot, текущий документ, или шаблон, прикрепленный к текущему документу.
  2. При помощи метода Application.BuildKeyCode() определяем цифровой код для нашей клавиатурной комбинации
  3. При помощи метода 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 со всеми необходимыми событиями.




Далее