1

Тема: Запуск Word в фоновом режиме

Здравствуйте!
Необходимо в планировщике создать ежедневную задачу, которая бы запускала шаблон word с поддержкой макросов (который формирует документ). Запускается шаблон батником, состоящим из одной строки, в которой путь к файлу: c:\shablon.dotm
Потом для планировщика (планировщик .bat не принимает) этот батник преобразую в файл с расширением exe и заставляю его работать в фоновом режиме, чтобы не отображалось черное окно командной строки.
Всё нормально отрабатывает, вот только всё-равно на некоторое время, меньше пол-секунды открывается на весь экран окно word и закрывается. Юзера могут пугаться и задавать ненужные вопросы.
В справке не нашел ключей командной строки для запуска word в фоновом режиме, это возможно?

2

Re: Запуск Word в фоновом режиме

aequit пишет:

Здравствуйте!
Необходимо в планировщике создать ежедневную задачу, которая бы запускала шаблон word с поддержкой макросов (который формирует документ). Запускается шаблон батником, состоящим из одной строки, в которой путь к файлу: c:\shablon.dotm
Потом для планировщика (планировщик .bat не принимает) этот батник преобразую в файл с расширением exe и заставляю его работать в фоновом режиме, чтобы не отображалось черное окно командной строки.
Всё нормально отрабатывает, вот только всё-равно на некоторое время, меньше пол-секунды открывается на весь экран окно word и закрывается. Юзера могут пугаться и задавать ненужные вопросы.
В справке не нашел ключей командной строки для запуска word в фоновом режиме, это возможно?

Советую присмотреться к программе Autoit ( внешняя ссылка ).
Она позволяет создавать разнообразные скрипты (с возможностью компиляции их в .exe) для управления вашими процедурами обработки данных, подобных той, что вы описали. Установите эту программу.

Вашу задачу я решил бы следующим образом:
1. Создайте текстовый командный файл для Autoit (условно, с названием test_wm.au3) и следующим содержимым:

Local $iReturn = ShellExecuteWait("C:\Program Files (x86)\Microsoft Office\Office14\winword.exe" , "/mtmacro", "C:\Temp", "", @SW_HIDE)

где параметры функции ShellExecuteWait имеют следующий смысл:
- путь доступа к исполняемому файлу Word
- макрос, который должен быть запущен в Word (в нашем случае - tmacro)
- рабочая папка ("C:\Temp")
- параметр verb (указан мной пустым, с ним я не разобрался до конца)
- признак того, что приложение (в нашем случае Word) должно быть исполнено в "скрытом" режиме (@SW_HIDE)
Файл test_wm.au3 поместите в рабочую папку ("C:\Temp")
2. В Word, в модуле NewMacros (в Normal.dot) создайте макрос tmacro. Последним оператором в нем должен быть оператор

Application.Quit

а другие операторы должны выполнять вашу целевую задачу. Например, открыть указанный вами шаблон, вызвать оттуда необходимую функцию и т.д. На время отладки целевой функциональности оператор Application.Quit закомментируйте.
3. Убедитесь, что при старте файла C:\Test\test_wm.au3 (как командного файла из Проводника Windows) у вас правильно выполняются целевые действия.
4. Скомпилируйте средствами Autoit файл C:\Test\test_wm.au3 в файл C:\Test\test_wm.exe
5. Средствами Планировщика Windows установите запуск программы C:\Test\test_wm.exe по нужному вам расписанию.

3

Re: Запуск Word в фоновом режиме

Спасибо, сделал всё по пунктам, работает. Окно на весь экран не всплывает. Единственный след - это маленькая иконка от Autoit в трее появляется на время работы макроса, но это уже с Autoit нужно разбираться.

4

Re: Запуск Word в фоновом режиме

aequit пишет:

Спасибо, сделал всё по пунктам, работает. Окно на весь экран не всплывает. Единственный след - это маленькая иконка от Autoit в трее появляется на время работы макроса, но это уже с Autoit нужно разбираться.

Разобрался. Стоит добавить второй строкой в коде #NoTrayIcon и иконка не появляется. Скомпилированный "екзешник" с word работает скрытно.

5

Re: Запуск Word в фоновом режиме

Ещё один ключ командной строки нужно добавить:
/q (запуск Word без отображения стартового экрана).
Поместить в кавычки перед ключом запуска макроса: "/q /mtmacro".