Автоматический запуск обработки прайс-листов по расписанию (из планировщика задач Windows)

Во вложении к статье - файл VBS скрипта, который при его запуске выполнит следующие действия:

1) подключится к приложению MS Excel (а если Excel не запущен, - то запустит его)
2) проверит, запущена ли надстройка (в данном примере - надстройка для обработки прайсов),
и если не запущена - то запустит её
3) запустит макрос с данным названием из этой надстройки (аналог нажатия кнопки в меню надстройки «Обработать все настроенные прайс-листы»)
4) по завершении обработки прайсов, закроет надстройку и сам Excel (если они были запущены скриптом)

После того, как скачаете скрипт, откройте его текстовым редактором (Блокнот),
и отредактируйте 2 строки, где заданы имя и путь к файлу надстройки:

' здесь задаём полный путь к файлу запускаемой надстройки
AddinPath = "C:\Папка\Подпапка\Unification.xla"
' и имя файла надстройки
AddinFilename = "Unification.xla"   

Укажите тут свой путь и имя файла надстройки, после чего сохраните изменения в файле скрипта.

Кроме того, надо подготовить программу «Прайс-лист» к программному запуску обработки
(чтобы избежать диалоговых окон)
Для этого:
1) в настройках программы, поставьте галочку
«Обрабатывать прайс-листы согласно настроек по-умолчанию»
2) в настройках на вкладке «Настройки по-умолчанию» укажите, какую конфигурацию вывода использовать
3) НЕОБЯЗАТЕЛЬНО: в настройках выбраной конфигурации вывода, снимите галочку «Открывать файл после создания»

Если надо обработать только один прайс-лист, то замените строку кода
XL.Run "ProcessOnlyPriceListsWithConfigurations"
на
XL.Run "ProcessPriceFromMenu", "c:\folder\subfolder\Полный путь к обрабатываемому файлу.xls"

Код прикреплённого к статье скрипта:

' © 2016 ExcelVBA.ru

' здесь задаём полный путь к файлу запускаемой надстройки
AddinPath = "D:\ПРОЕКТЫ\- Мои проекты - Excel\Unification\Unification.xla"
' и имя файла надстройки
AddinFilename = "Unification.xla"       
 
On Error Resume Next
 
' пробуем подключиться к запущенному Excel
Set XL = GetObject(, "Excel.Application")
XLopenedByScript = False
If XL Is Nothing Then
	' если не запущен - то запускаем Excel
	Set XL = CreateObject("Excel.Application")
	XLopenedByScript = True
	If XL Is Nothing Then
		MsgBox "Не удалось запустить приложение MS Excel", vbCritical, "Скрипт автозапуска"
		Wscript.Quit
	End If
End If
 
 
' пытаемся найти надстройку среди запущенных файлов
Set WB = XL.Workbooks(AddinFilename)
AddInOpenedByScript = False
If WB Is Nothing Then
	' если не запущена надстройка, - запускаем её
	Set WB = XL.Workbooks.Open(AddinPath)
	AddInOpenedByScript = True
	If WB Is Nothing Then
		MsgBox "Не удалось запустить надстройку «" & AddinFilename & "»", vbCritical, "Скрипт автозапуска"
		Wscript.Quit
	End If
End If
 
' запускаем макрос
XL.Run "ProcessOnlyPriceListsWithConfigurations"
' в данном случае это макрос ProcessOnlyPriceListsWithConfigurations из надстройки Unification
' (этот макрос запустит автоматическую обработку всех прайс-листов, для которых назначены обработчики)

 
' здесь можно прописать код закрытия надстройки и Excel (но можно ничего и не закрывать)
If AddInOpenedByScript Then WB.Close False ' закрываем надстройку, если мы её открыли скриптом
If XLopenedByScript Then XL.Quit ' закрываем Excel, только если мы его сами запустили скриптом

Вложения:
prices.vbs1.59 КБ