VBA в Word Объект Word.Task и программный запуск приложений из Word средствами VBA

          Назад



11.6.10 Коллекция Tasks и объект Task


Объект Word.Task, программный запуск приложений из Word средствами VBA, передача сообщений из Word внешним приложениям

Чаще всего Word запускается из Excel, Access или другого приложения, но иногда встречается и обратная необходимость — нужно открыть из Word другое приложение и переключиться в него. Самый простой способ запустить другое приложение из Word — воспользоваться стандартным объектом VBA Shell. Например, чтобы запустить блокнот, можно воспользоваться командой

Shell ("notepad.exe")

Есть и множество других возможностей, например, воспользоваться объектом Application для других приложений Word, или средствами WSH (особенно для консольных приложений), или — если приложение нужно запустить на другом компьютере — средствами WMI.

После того, как приложение запущено, весь набор работающих приложений представляется в Word коллекцией Tasks, а каждое отдельное приложение — соответственно, объектом Task. У коллекции Tasks есть два интересных метода:

  • Exists() — проверить, запущено ли нужное нам приложение. Например, запуск нашего блокнота с проверкой может выглядеть так:

If Tasks.Exists("Notepad") = False Then

Shell "notepad.exe"

Else

Tasks("Notepad").Activate

End If

Tasks("Notepad").WindowState = wdWindowStateMaximize

  • ExitWindows() — произвести операцию Log Off, то есть завершить сеанс работы в Windows. Несохраненные документы Word при этом закроются без сохранения (и без вопросов к пользователю), а документы остальных приложений пользователю будет предложено сохранить.

У объекта Task интересных свойств и методов больше:

  • Height, Width, Top, Left — эти свойства позволяют точно настроить размер окна выбранного вами приложения.
  • Visible — возможность спрятать приложение.
  • WindowState — возможность развернуть, свернуть или восстановить окно.
  • назначение методов Activate(), Close(), Move(), Resize() очевидно.

самый интересный метод — это метод SendWindowMessage(). Он позволяет передавать окну приложения сообщения Windows (щелчки мышью, нажатия клавиш и т.п.). Разобраться в том, какие приложения можно посылать окнам приложений и что они значат, можно при помощи Microsoft Platform Software Development Kit. Например, чтобы в нашем блокноте отобразить окно "О программе", можно воспользоваться командой

Tasks("Notepad").SendWindowMessage &H111, 11, 0




Далее