
- •9.1. Объектная модель ms Word
- •9.2. Работа с объектными переменными
- •9.3. Объект Application - приложение
- •9.4. Методы объекта Application
- •9.4.1. BuildKeyCode, KeyString - горячие клавиши
- •9.4.2. ChangeFileOpenDirectorу - путь для работы с файлами
- •9.4.3. CleanString - очистка строк
- •9.4.4. Keyboard - программное переключение раскладки
- •9.4.5. ListCommands - справка по горячим клавишам
- •9.4.6. NewWindow - копия окна активного документа
- •9.4.7. OnTime - запуск макросов по расписанию
- •9.4.8. PrintOut - распечатка документов
- •9.4.9. Quit - выход из приложения
- •9.4.11. ScreenRefresh - принудительное обновление экрана
- •9.5. Свойства объекта Application
- •9.5.1. ActiveDocument и другие - активный документ
- •9.5.2. CapsLock - текущее состояние Caps Lock
- •9.5.3. Caption - заголовок окна ms Word
- •9.5.4. CustomizationContext - область сохранения настроек
- •9.5.5. Dialogs - диалоговые окна ms Word
- •9.5.6. DisplayAlerts - управление выводом сообщений
- •9.5.7. EnableCancelKey - запрещаем остановку программы
- •9.5.8. IsObjectValid - проверка объектных переменных
- •9.5.9. KeyBindings - назначаем клавиатурные сокращения
- •9.5.10. NumLock - состояние цифровой клавиатуры
- •9.5.11. RecentFiles - недавно открытые файлы
- •9.5.12. ScreenUpdating - запрет обновления экрана
- •9.5.13. StatusBar - вывод информации в строку состояния
- •9.5.14. System - системная информация
- •9.5.15. Tasks - работа с запущенными приложениями
- •9.5.16. Visible - скрытие окна ms Word
- •9.5.17. Windows - работа с окнами
- •9.6. События объекта Application
9.4.3. CleanString - очистка строк
CleanString очищает переданную строку от непечатаемых и специальных символов, превратив ее в обычный текст. Такой же текст можно получить, если скопировать текст из Microsoft Word в Блокнот, а потом - обратно. Например, с помощью такого кода можно получить очищенную строку из выделенной области документа (листинг 9.7.).
str_Clean = Application.CleanString(Selection.Text)
Листинг 9.7. Очистка строки (html, txt)
9.4.4. Keyboard - программное переключение раскладки
Keyboard позволяет программно переключать раскладку клавиатуры. При переключении используется идентификатор языковых и клавиатурных установок. Чтобы включить русскую раскладку, можно воспользоваться таким кодом (листинг 9.8.):
Application.Keyboard 1049
Листинг 9.8. Переключение на русскую раскладку клавиатуры (html, txt)
Очевидно, что 1049 - это код русского языка. Для включения английской раскладки используйте этот метод с идентификатором 1033.
9.4.5. ListCommands - справка по горячим клавишам
ListCommands это необычный метод - если вызвать его с параметром True (листинг 9.9.) - он создаст новый документ, содержащий таблицу со списком клавиатурных сочетаний, назначенных командам MS Word. Таблица содержит несколько десятков страниц.
Application.ListCommands True
Листинг 9.9. Вывод информации о горячих клавишах (html, txt)
9.4.6. NewWindow - копия окна активного документа
09-02-New Window.docm - пример к п. 9.4.6.
NewWindow создает копию окна активного документа. Это может быть полезным например, для того, чтобы вывести один и тот же документ на два монитора при работе с расширенным рабочим столом и т.д. Например, метод можно вызвать так:
Application.NewWindow
Листинг 9.10. Создание копии окна активного документа (html, txt)
При необходимости можно задать, для какого именно документа вы хотите создать копию окна. Однако, это потребует использования других объектов. Например - коллекции Windows, содержащей окна документов. Такой код (листинг 9.11.) создаст одну копию для каждого открытого окна:
For i = Application.Windows.Count To 1 Step -1
Application.Windows.Item(i).NewWindow
Next i
Листинг 9.11. Создание копии для каждого открытого окна (html, txt)
Мы не случайно запустили цикл обхода открытых окон в обратном порядке. Дело в том, что иначе будет создано несколько копий одного и того же документа.
В этом примере вам встретились неизвестные ранее свойства Count и Item. Первое обычно содержит количество элементов в коллекции, второе позволяет обращаться к элементам по индексам или именам.
При создании копии после имени документа появляется двоеточие с номером окна, например, ":1" для первого, ":2" для второго и т.д.
9.4.7. OnTime - запуск макросов по расписанию
09-03-OnTime.docm - пример к п. 9.4.7.
OnTime позволяет устанавливать таймер, по которому можно запустить макрос в определенное время. Например, чтобы выполнить макрос MyMacros, который хранится в том же документе, что и исполняемый макрос, достаточно выполнить такой код (листинг 9.12.).
Application.OnTime When:="08:37:00", Name:="MyMacro"
Листинг 9.12. Установка таймера запуска макроса (html, txt)
Параметр When указывает на время запуска, параметр Name - на имя макроса. Важно, чтобы макрос был доступен как в момент запуска таймера, так и в момент запуска самого макроса. Для того чтобы это условие соблюдалось, желательно хранить макросы, запускаемые по таймеру, в Normal.dotm, в другом глобальном шаблоне, или в том же документе, в котором произошел запуск таймера.
Как видите, мы привели пример лишь для запуска макроса в строго определенное время. А как же быть, если нужно запустить макрос, например, через пятнадцать секунд после выполнения какой-либо процедуры? Ответ прост (листинг 9.13.)
Application.OnTime _
When:=Now + TimeValue("00:00:15"), _
Name:="MyMacro"
Листинг 9.13. Запуск макроса по расписанию (html, txt)
Здесь мы запускаем тот же самый макрос, но уже через 15 секунд после установки таймера. Функция Now имеет тип Date и возвращает текущую дату и время, а функция TimeValue преобразует переданное ей время в формат Date.
Если вы хотите, чтобы какой-то макрос запускался с некоторой периодичностью - установку таймера на запуск этого макроса можно установить в нем. Первый запуск макроса можно произвести вручную или каким-то другим способом (например - по событию приложения, с помощью автоматически выполняемого макроса), а последующие запуски этот макрос будет инициировать самостоятельно.