Опубликован: 25.03.2009 | Уровень: для всех | Доступ: свободно
Лекция 9:

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

< Лекция 8 || Лекция 9: 123 || Лекция 10 >

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 - разрешаем.

< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Евгений Ушаков
Евгений Ушаков
О стоимости курса
Александр Новиков
Александр Новиков
Справочник по объектам VBA
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Михаил Алексеев
Михаил Алексеев
Россия, Уфа, УГАТУ, 2002