КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Запуск внешней программы, управление ею
Запуск макроса в заданное время Можно запустить макрос не сразу, а через некоторое время или в заданное время. Это можно использовать для организации выдачи напоминаний или для проведения некоторых периодических работ, например, через каждые две минуты передавать изменяемый документ другому пользователю. Или, наоборот, заглянуть в некоторую папку, не появились ли там новые файлы, и т.п. При помощи OnTime можно организовать ожидание завершения какой-то операции. Таким образом реализуется перемещение текущего документа в другую папку. Поскольку активный документ не может быть перемещен, то можно запустить при помощи Shell специальный документ-перемещалку, то есть документ, в котором через некоторое время после открытия будет запускаться макрос, перемещающий исходный файл. В исходном файле с именем g:\try\ish.docm по закрытию документа выполняется следующий код, в котором вызывается MS Word с параметром – документом, содержащем макрос, выполняемый через заданное время. Private Sub Document_Close() ThisDocument.Save Shell "e:\Program Files\Microsoft Office\Office12\WINWORD.EXE g:\Doc1.docm" End Sub В открытом файле Doc1.docm обработчик события Document_Open выглядит следующим образом: Private Sub Document_Open() Application.OnTime Now + TimeValue("00:00:15"), "Module1.replace" End Sub Наконец, в модуле содержится процедура replace, код которой перемещает исходный файл в некоторую папку. Sub replace() Dim fs As New Scripting.FileSystemObject fs.MoveFile " g:\try\ish.docm ", " g:\arh\ish.docm" Application.Quit True End Sub Внешнюю программу, то есть любой выполняемый файл, можно запустить, воспользовавшись функцией SHELL(полное имя, стиль окна). В случае успешного выполнения этой функции, она возвращает идентификатор задачи. Очень важно то, что запуск внешней задачи при помощи Shell осуществляется в асинхронном режиме! Если же Вы запускаете внешнее приложение с помощью CreateObject или GetObject, то такой запуск осуществляется в синхронном режиме, по крайней мере, ожидается окончание выполнения кода обработчика события «открытие документа». Кроме того, при помощи Shell можно запустить любой выполняемый файл, а при помощи CreateObject – только COM-сервер. Запущенным по команде Shell приложением можно управлять. Для этого следует его активизировать – оператор AppActivate, а затем отправить ему команды, имитируя клавиатурный ввод – оператор SendKeys. Второй параметр команды SendKeys определяет, ожидать или нет завершения указанной операции. В примере ниже открывается «Блокнот», затем активизируется его окно. В текстовое окно записывается выражение, в котором складываются несколько подряд расположенных чисел (от 1 до 50). Затем закрывается окно Блокнота, причем передается имя файла для сохранения. Dim RetVal RetVal = Shell("E:\WINDOWS\NOTEPAD.EXE", 1) ' запуск блокнота AppActivate RetVal ‘ блокнот располагается сверху всех окон For i = 1 To 50 ' SendKeys i & "{+}", True ' в текстовое окно вносится выражение 1+2+3+..+50 Next SendKeys "%{F4}", True ' закрываем окно SendKeys "{ENTER}", True ' отвечаем на появившийся запрос, что хотим сохранить SendKeys "g:\ttt{ENTER}{ENTER}", True ' задаем имя файла, и окно закрывается
Дата добавления: 2014-01-04; Просмотров: 464; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |