:: Visual Foxpro, Foxpro for DOS
Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Здравствуйте.

Что я пытаюсь сделать?! Я хочу автоматизировать процесс создания Excel-файла по расписанию. Написал программу на VFP:

SET DEFAULT TO e:\for_sber
* Проверка наличия файла
if file("spravochnik.xlsx")
erase "spravochnik.xlsx"
ENDIF
*Создаю книгу
oExcel=CREATEOBJECT('excel.application')
oExcel.visible=.f.
oExcel.AutomationSecurity= 3
oExcel.DisplayAlerts= .F.
oBook=oExcel.WorkBooks.Add
oBook.ActiveSheet.cells(1,1).value='q'
*Сохраняю
oBook.SaveAs("e:\for_sber\spravochnik.xlsx", , , , .f., .f., 3, 2)
*Закрываю
oBook.Close
oExcel.Quit
RELEASE ALL

Создал exe-файл. Запускаю exe-файл. Программа отрабатывает и создает Excel-файл.
В Планировщике заданий Windows создал задание запуска exe-файла по расписанию.
При запуска задания программа висит. Чего-то ждет. Методом проб установил, что висит на строке:

oBook.SaveAs("e:\for_sber\spravochnik.xlsx", , , , .f., .f., 3, 2)

До этого висела на операторах внесения изменений в книгу. Но строка:

oExcel.DisplayAlerts= .F.

Эту проблему решила.
Кто-нибудь может помочь решить указанную проблему или подсказать? Может я делаю что-то не так? Сам я не очень сильно владею объектной моделью Excel.
Спасибо. Владимир.
VFP 9.0
OC: Windows 10
Excel 2010



Исправлено 4 раз(а). Последнее : Vuk, 20.11.17 14:20
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
dfr

Сообщений: 254
Откуда: Барнаул
Дата регистрации: 29.07.2005
Чаще прав не хватает у юзера под которым Планировщик запускает EXE...
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Запускаю задание под собственным логином. Запускал задание также под логином администратора. В планировщике заданий это графа: "При выполнении задачи использовать следующую учетную запись пользователя:". Не помогло.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
ry

Сообщений: 2114
Дата регистрации: 24.09.2007
Удаляете spravochnik.xlsx, а создаете spravochnik.xls - это опечатка или в этом может быть загвоздка (попытка перезаписи существующего файла)?
Права на запись в папку тоже не мешало бы проверить. От имени какого пользователя или службы запускается задание планировщика? ... А, уже вижу, проверяли.



Исправлено 1 раз(а). Последнее : ry, 15.11.17 10:59
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Извините. Это опечатка.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
1. Сделать
oExcel.visible=.T.

2. Залогиниться под тем юзером под каким запускается задание, запустить задание из планировщика, и посмотреть на диалог (что Эксель хочет)


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 15.11.17 11:07
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Поставил строку
oExcel.visible=.T.
Убрал закрытие Excel.
Запускаю exe-файл. Запускается Excel и остается запущенным.
При запуске из планировщика заданий Excel не появляется. Хотя в Диспетчере задач Windows он появляется в группе "Фоновые процессы".
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
ry

Сообщений: 2114
Дата регистрации: 24.09.2007
Надо еще назад вернуть DisplayAlerts=.T., чтобы видеть сообщения Excel при тестировании.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
В операционной системе работаю под тем же пользователем, что и запускаю задание в планировщике заданий Windows.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Вернул значение

DisplayAlerts=.T.

Запускаю exe-файл. Запускается Excel без ошибок и без других всплывающих окон и уведомлений. В планировщике запускаю - пусто на экране. Хотя в фоновых процессах появляется Excel. При запуске через планировщик заданий Excel почему-то не появляется на экране. Хотя свойство стоит:

oExcel.visible=.T.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Путь запуска программы из планировщика может быть не тот, в котором файл расположен. Поэтому ваши file и erase, работающие с относительным путём могут не расчистить место для excel, который работает с абсолютным путём.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Vuk
bFlag=.f.
bFlag=file("spravochnik.xlsx")
if bFlag=.t.
Вот это вот всё это одна строчка:
if file("spravochnik.xlsx")
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Пишите в программе строку
MESSAGEBOX('Debug',16,'debug')
И вставляете ее в разные места.
Смотрите до куда дошло.
Еще можно туда же вывести инфу о переменных, о путях, и пр.
Ну и конечно не обязательно MESSAGEBOX.
Достаточно стандартный ход, для языков без отладчика)


------------------
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Нет. Файл "e:\for_sber\spravochnik.xlsx" при запуске exe-файла через планировщик заданий нормально удаляется. Его нет в папке. Нет вообще никаких файлов Excel-я. Однако при запуске через задания программа висит. Такое ощущение складывается, что в Excel-е возникает какое-то событие (окошко или что-то), а свойство, которое за это отвечает, я не знаю, чтобы игнорировать его. Хотя при запуске напрямую exe-файла все отрабатывает без сообщений.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Да. Совершенно верно.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Что я обнаружил с помощью Вашей подсказки:
Программа:

SET DEFAULT TO e:\for_sber
* Проверка наличия файла
bFlag=.f.
bFlag=file("spravochnik.xlsx")
if bFlag=.t.
erase "spravochnik.xlsx"
ENDIF

Проходит на УРА при запуске через планировщик заданий.
Программа с добавлением Вашего предложения:

SET DEFAULT TO e:\for_sber
* Проверка наличия файла
bFlag=.f.
bFlag=file("spravochnik.xlsx")
if bFlag=.t.
erase "spravochnik.xlsx"
ENDIF
=MESSAGEBOX("Следующий этап висит")

Висит после запуска через планировщик заданий. При этом окно с текстом "Следующий этап висит" не появляется. Вывод на экран не происходит.
То есть у фоновых процессов информация (Окна) отображаются где-то там ... (не на экране).
Получается и Excel висит из-за того, что при команде:

oExcel.Workbooks(1).saveas("e:\for_sber\spravochnik.xlsx",,,,,,,,,,,)
Возникло что-то (информационное окно или что-то)?



Исправлено 1 раз(а). Последнее : Vuk, 15.11.17 13:49
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
поставьте =MESSAGEBOX("Первый этап висит") в самом начале


------------------
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Vuk
bFlag=.f.
bFlag=file("spravochnik.xlsx")
if bFlag=.t.
Вот это вот всё это одна строчка:
if file("spravochnik.xlsx")
Поправьте же все таки!
Неужели не жаль пространство на экране)))


------------------
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Аспид
поставьте =MESSAGEBOX("Первый этап висит") в самом начале

И что вы ожидаете?

Vuk

Для ERASE не нужно IF FILE(), из хелпа:
-"Эта команда не генерирует ошибку, если определенный файл не существует."

Или подмените обработчик ошибок ON ERROR, или лучше - оберните ERASE,SaveAS, и т.п. в TRY...ENDTRY.
Для промежуточных результатов можно завести хотя бы простейший .log хотя бы через STRTOFILE().
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
lulgu
Аспид
поставьте =MESSAGEBOX("Первый этап висит") в самом начале

И что вы ожидаете?

Vuk

Для ERASE не нужно IF FILE(), из хелпа:
-"Эта команда не генерирует ошибку, если определенный файл не существует."

Или подмените обработчик ошибок ON ERROR, или лучше - оберните ERASE,SaveAS, и т.п. в TRY...ENDTRY.
Для промежуточных результатов можно завести хотя бы простейший .log хотя бы через STRTOFILE().

Erase все-таки может выдать сообщение об ошибке Error 1705 (File access is denied )
Достаточно создать Excel файл и держать его открытым в MSEXCEL.
При попытке удаления командой ERASE получите сообщение об ошибке 1705.
Потому автору топика надо подстраховаться оберткой TRY ... CATCH ENDTRY для erase "spravochnik.xlsx" .


------------------
Незнание делает жизнь такой интересной.




Исправлено 1 раз(а). Последнее : dimuhametov, 15.11.17 18:37
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 19 (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика