Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объектная модель MS Word объект Application.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
246.27 Кб
Скачать

9.4.3. CleanString - очистка строк

CleanString очищает переданную строку от непечатаемых и специальных символов, превратив ее в обычный текст. Такой же текст можно получить, если скопировать текст из Microsoft Word в Блокнот, а потом - обратно. Например, с помощью такого кода можно получить очищенную строку из выделенной области документа (листинг 9.7.).

str_Clean = Application.CleanString(Selection.Text)

Листинг 9.7. Очистка строки (htmltxt)

9.4.4. Keyboard - программное переключение раскладки

Keyboard позволяет программно переключать раскладку клавиатуры. При переключении используется идентификатор языковых и клавиатурных установок. Чтобы включить русскую раскладку, можно воспользоваться таким кодом (листинг 9.8.):

Application.Keyboard 1049

Листинг 9.8. Переключение на русскую раскладку клавиатуры (htmltxt)

Очевидно, что 1049 - это код русского языка. Для включения английской раскладки используйте этот метод с идентификатором 1033.

9.4.5. ListCommands - справка по горячим клавишам

ListCommands это необычный метод - если вызвать его с параметром True (листинг 9.9.) - он создаст новый документ, содержащий таблицу со списком клавиатурных сочетаний, назначенных командам MS Word. Таблица содержит несколько десятков страниц.

Application.ListCommands True

Листинг 9.9. Вывод информации о горячих клавишах (htmltxt)

9.4.6. NewWindow - копия окна активного документа

09-02-New Window.docm - пример к п. 9.4.6.

NewWindow создает копию окна активного документа. Это может быть полезным например, для того, чтобы вывести один и тот же документ на два монитора при работе с расширенным рабочим столом и т.д. Например, метод можно вызвать так:

Application.NewWindow

Листинг 9.10. Создание копии окна активного документа (htmltxt)

При необходимости можно задать, для какого именно документа вы хотите создать копию окна. Однако, это потребует использования других объектов. Например - коллекции Windows, содержащей окна документов. Такой код (листинг 9.11.) создаст одну копию для каждого открытого окна:

For i = Application.Windows.Count To 1 Step -1

Application.Windows.Item(i).NewWindow

Next i

Листинг 9.11. Создание копии для каждого открытого окна (htmltxt)

Мы не случайно запустили цикл обхода открытых окон в обратном порядке. Дело в том, что иначе будет создано несколько копий одного и того же документа.

В этом примере вам встретились неизвестные ранее свойства 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. Установка таймера запуска макроса (htmltxt)

Параметр When указывает на время запуска, параметр Name - на имя макроса. Важно, чтобы макрос был доступен как в момент запуска таймера, так и в момент запуска самого макроса. Для того чтобы это условие соблюдалось, желательно хранить макросы, запускаемые по таймеру, в Normal.dotm, в другом глобальном шаблоне, или в том же документе, в котором произошел запуск таймера.

Как видите, мы привели пример лишь для запуска макроса в строго определенное время. А как же быть, если нужно запустить макрос, например, через пятнадцать секунд после выполнения какой-либо процедуры? Ответ прост (листинг 9.13.)

Application.OnTime _

When:=Now + TimeValue("00:00:15"), _

Name:="MyMacro"

Листинг 9.13. Запуск макроса по расписанию (htmltxt)

Здесь мы запускаем тот же самый макрос, но уже через 15 секунд после установки таймера. Функция Now имеет тип Date и возвращает текущую дату и время, а функция TimeValue преобразует переданное ей время в формат Date.

Если вы хотите, чтобы какой-то макрос запускался с некоторой периодичностью - установку таймера на запуск этого макроса можно установить в нем. Первый запуск макроса можно произвести вручную или каким-то другим способом (например - по событию приложения, с помощью автоматически выполняемого макроса), а последующие запуски этот макрос будет инициировать самостоятельно.