О стоимости курса |
Объектная модель MS Word, объект Application
9.4.8. PrintOut - распечатка документов
PrintOut предназначен для вывода документов на печать. Например, следующий код (листинг 9.14.) выводит на печать все документы Microsoft Word 2007 (то есть - с расширениями docx и docm ), расположенные в корневом каталоге диска C.
var_Doc = Dir("C:\*.doc?") Do While var_Doc <> "" Application.PrintOut FileName:=var_Doc var_Doc = Dir() LoopЛистинг 9.14. Печать всех документов из корневого каталога диска C
Метод PrintOut существует для различных объектов и может принимать множество параметров, управляющих всеми тонкостями печати. Например, с помощью такого кода (листинг 9.15.) мы можем распечатать первые пять страниц текущего документа:
ActiveDocument.ActiveWindow.PrintOut _ Range:=wdPrintFromTo, From:="1", To:="5"Листинг 9.15. Вывод на печать первых 5 страниц текущего документа
9.4.9. Quit - выход из приложения
Quit используется для выхода из приложения (листинг 9.16.):
Application.QuitЛистинг 9.16. Выход из приложения
9.4.10. Run - запуск макросов
Run позволяет запускать макросы и, при необходимости, передавать им параметры (до 30). При вызове методу Run передается имя, состоящее из имени проекта, имени модуля, и, собственно, имени макроса. Например, запуск макроса MyMacros, расположенного в модуле NewModule проекта Project1 выглядит так (листинг 9.17.):
Application.Run ("Project1.NewModule.MyMacros")Листинг 9.17. Запуск макроса с помощью метода Run
Параметры, передаваемые макросу, перечисляются после его имени через запятую.
9.4.11. ScreenRefresh - принудительное обновление экрана
ScreenRefresh позволяет принудительно обновить экран. Используется обычно в комбинации с запретом автоматического обновления экрана (свойство Application.ScreenUpdating, его мы рассмотрим ниже). Как правило, обновление экрана делают через некоторые промежутки времени - тогда у пользователя не возникает ощущения, что программа зависла.
Теперь рассмотрим наиболее полезные свойства объекта Application.
9.5. Свойства объекта Application
9.5.1. ActiveDocument и другие - активный документ
ActiveDocument возвращает объект активного документа - того, который открыт в данный момент в Microsoft Word для редактирования. У объекта ActiveDocument есть множество полезных свойств и методов. Мы обсудим их при разговоре об объекте Document.
Например, в листинге 9.18 мы выводим в окне сообщения имя активного документа.
MsgBox Application.ActiveDocument.NameЛистинг 9.18. Вывод имени активного документа
Надо отметить, что нельзя модифицировать свойство ActiveDocument - то есть не можем с его помощью сделать неактивный документ активным. Чтобы сделать документ активным, используют специальный метод объекта Document.
Существует немало других свойств Application, имена которых начинаются с Active.
ActivePrinter возвращает объект активного принтера - устройства, используемого для печати документов по умолчанию.
ActiveWindow возвращает активное окно - объект типа Window.
9.5.2. CapsLock - текущее состояние Caps Lock
CapsLock показывает текущее состояние режима Caps Lock. Если этот режим активен, по умолчанию при вводе с клавиатуры вводятся прописные буквы. Если режим Caps Lock включен - свойство возвращает True, если выключен - False.
9.5.3. Caption - заголовок окна MS Word
Caption позволяет узнать, и, при желании, изменить заголовок окна Microsoft Word.
Например код в листинге 9.19. меняет словосочетание Microsoft Word в заголовке окна на слова "Моя программа".
Application.Caption = "Моя программа"Листинг 9.19. Изменение заголовка окна MS Word
9.5.4. CustomizationContext - область сохранения настроек
CustomizationContext позволяет узнавать и задавать документ и шаблон, в котором сохраняются такие настройки, как изменения в настройке меню, панелей инструментов, горячих клавиш. Чтобы узнать текущую область настройки, достаточно выполнить код из листинга 9.20.
MsgBox Application.CustomizationContextЛистинг 9.20. Узнаем область сохранения настроек
Чтобы установить в качестве области настройки шаблон Normal.dotm (то есть - сделать настройки доступными для всех документов), достаточно воспользоваться кодом листинга 9.21.:
CustomizationContext = NormalTemplateЛистинг 9.21. Будем сохранять изменения настроек в Normal.dotm
Обратите внимание на то, что в предыдущих версиях MS Word этот шаблон назывался Normal.dot.
Для сохранения изменений в шаблоне, присоединенном к активному документу, можно воспользоваться командой из листинга 9.22.:
CustomizationContext = ActiveDocument.AttachedTemplateЛистинг 9.22. Сохраняем изменения в присоединенном шаблоне
Для сохранения изменений лишь в текущем документе, можно использовать команду из листинга 9.23.
CustomizationContext = ThisDocumentЛистинг 9.23. Сохраняем изменения в присоединенном шаблоне
9.5.5. Dialogs - диалоговые окна MS Word
09-04-Dialogs.docm - пример к п. 9.5.5.
Dialogs возвращает коллекцию Dialogs (Диалоговые окна), которая дает доступ ко всем диалоговым окнам Microsoft Word. Если выполнить код листинга 9.24., можно узнать количество объектов в коллекции Dialogs.
MsgBox ("Количество окон в коллекции Dialogs:" + _ Str(Application.Dialogs.Count))Листинг 9.24. Количество диалоговых окон в коллекции Dialogs
Чтобы отобразить диалоговое окно поиска строк в документе, можно использовать код, представленный в листинге 9.25.
Dim obj_FindS As Dialog Set obj_FindS = Dialogs(wdDialogEditFind) With obj_FindS .Find = "Строка" .Show End WithЛистинг 9.25. Запуск диалогового окна поиска строк в документе
Здесь мы объявляем объектную переменную типа Dialog, создаем ссылку на окно поиска строк в документе - это окно представлено константой wdDialogEditFind, после чего присваиваем свойству Find окна поиска значение "Строка" - именно это значение будет отображаться в строке поиска, и показываем окно поиска, используя метод Show. Похожим образом работают и с другими диалоговыми окнами. Их имена (около 230) можно найти в перечислении WdWordDialog.
9.5.6. DisplayAlerts - управление выводом сообщений
DisplayAlerts - позволяет управлять выводом диалоговых окон, сообщений об ошибках и т.д. при работе в Microsoft Word. Чтобы запретить вывод всех сообщений, используйте код, приведенный в листинге 9.26.
Application.DisplayAlerts = wdAlertsNoneЛистинг 9.26. Запрет вывода всех сообщений
Константа wdAlertsNone запрещает вывод сообщений. Аналогично, константа wdAlertsAll разрешает вывод всех сообщений, а wdAlertsMessageBox разрешает лишь вывод окон сообщений, сообщения об ошибках не выводятся.
9.5.7. EnableCancelKey - запрещаем остановку программы
09-05-Cancel.docm - пример к п. 9.5.7
EnableCancelKey - позволяет разрешать и запрещать пользователю остановку программы по нажатию сочетания клавиш Ctrl + Break. Это может быть полезно при выполнении участков кода, которые нельзя прерывать.
Для того чтобы запретить прерывание работы программы нужно присвоить этому свойству значение wdCancelDisabled, для разрешения - wdCancelInterrupt.
Пример использования этого оператора вы можете найти в листинге 9.27.
Dim num_b As Double MsgBox ("Вы не сможете прервать выполнение " + _ "следующего кода") Application.EnableCancelKey = wdCancelDisabled For i = 1 To 1000000 For j = 100 To 1 Step -1 num_b = num_b * i / j Next j Next i Application.EnableCancelKey = wdCancelInterrupt MsgBox ("А теперь Ctrl + Pause Break " + _ "снова работает")Листинг 9.27. Запрет прерывания выполнения программы
9.5.8. IsObjectValid - проверка объектных переменных
IsObjectValid - позволяет проверить объектную переменную. Если объект, на которую она ссылается, существует - проверка возвратит True, если нет - False. Это свойство полезно использовать для проверки объектов, которые могут быть удалены пользователем. Если объект существует, можно произвести с ним какие-либо действия. Если нет - сообщить причину, по которой действия невозможны.
9.5.9. KeyBindings - назначаем клавиатурные сокращения
KeyBindings - возвращает коллекцию KeyBindings, которая содержит информацию о клавиатурных привязках. Это очень полезная коллекция - с ее помощью можно, например, назначить клавиатурную комбинацию для запуска какого-нибудь макроса. листинг 9.28. позволяет назначить комбинацию клавиш Alt + Shift + T макросу TextEdit, хранящемуся в модуле MyMacros шаблона Normal.Dotm
Application.CustomizationContext = NormalTemplate Application.KeyBindings.Add _ wdKeyCategoryMacro, _ "Normal.MyMacros.TextEdit", _ BuildKeyCode(wdKeyAlt, wdKeyShift, wdKeyT)Листинг 9.28. Программное назначение комбинации клавиш макросу
Сначала с помощью свойства CustomizationContext мы устанавливаем место, где будет сохранена привязка. Это - шаблон Normal.Dotm. Далее мы используем метод Add коллекции KeyBindings. Мы передаем этому методу три параметра. Первый ( wdKeyCategoryMacro ) указывает методу на то, что мы назначаем клавиатурную комбинацию макросу. Второй -" Normal.MyMacros.TextEdit " - указывает путь к макросу, запуск которого мы назначаем клавиатурному сокращению. Третий параметр содержит вызов метода BuildKeyCode - напомню, что он генерирует код сочетания клавиш на основе переданных ему параметров. В нашем случае он сгенерирует код для сочетания клавиш Alt + Shift + T - мы передали методу параметры wdKeyAlt, wdKeyShift и wdKeyT.
Если все сделано верно - в частности, макрос, запуск которого мы автоматизируем, существует - после выполнения такого кода нажатие выбранного сочетания клавиш в любом активном документе приведет к запуску этого макроса.
9.5.10. NumLock - состояние цифровой клавиатуры
NumLock возвращает состояние клавиши NumLock - True если цифровая клавиатура находится в режиме ввода цифр, иначе - False.
9.5.11. RecentFiles - недавно открытые файлы
RecentFiles - позволяет работать с файлами, которые вы недавно открывали. Список этих файлов можно увидеть в диалоговом окне открытия файлов. Последний файл, с которым вы работали, хранится в списке первым. Чтобы открыть его, можно воспользоваться кодом из листинга 9.29.
RecentFiles(1).OpenЛистинг 9.29. Открываем последний из недавно открытых файлов
9.5.12. ScreenUpdating - запрет обновления экрана
09-06-ScreenUpdating.docm - пример к п. 9.5.12.
Свойство ScreenUpdating используют для отключения обновления экрана во время вывода в документ большого количества информации или других действий с документом. Это позволяет ускорить работу, так как системные ресурсы не тратятся на постоянное обновление экрана. В листинге 9.30. мы запрещаем обновление экрана, выводим в документ 10000 строк, принудительно обновляя экран после каждой 1000 строк, после чего разрешаем автоматическое обновление.
Application.ScreenUpdating = False For i = 1 To 10 For j = 1 To 1000 Selection.TypeText ("Строка №" + Str(i * j)) Selection.TypeParagraph Next j Application.ScreenRefresh Next i Application.ScreenUpdating = TrueЛистинг 9.30. Запрет и разрешение обновления экрана
Очевидно, что присвоив False свойству ScreenUpdating мы запрещаем обновление экрана, а присвоив True - разрешаем.