Файл .bat, выполняющий макрос Excel в фоновом режиме (или решение .vbs) - PullRequest
0 голосов
/ 24 января 2020

У меня есть следующая проблема: - Задача: должен быть открыт готовый файл Excel, и при открытии выполняется макрос. - Эта задача должна выполняться каждый день в определенное время (например, в 10:00), выполнение должно выполняться в фоновом режиме (чтобы пользователь вообще не беспокоился).

Проблема: 1) Если я попробуйте сделать это с помощью файла .vbs (в планировщике задач), тогда выполнение происходит в фоновом режиме, однако некоторые функции теряются (есть надстройка Excel, устанавливающая соединение с приложением компании, из которого она должна извлечь некоторые данные -> соединение не установлено, данные не принимаются). Я предполагаю, что это лишено привилегий или чего-то в этом роде. VBS bode:

Dim objExcel
Set objExcel=CreateObject("Excel.Application")
objExcel.Application.Run "'C:\SomePath.xlsm'!Module1.Controller"

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

Start "C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.exe" "C:\SomePath.xlsm"

Есть ли у кого-то опыт решения подобных проблем? Я открыт для любого другого решения. :)

Спасибо!

1 Ответ

0 голосов
/ 24 января 2020

Вы можете запустить его в фоновом режиме, как это в пакетном режиме (основная часть - код VBScript):

<!--
@Echo Off
Cscript //Nologo "%~f0?.wsf" //job:VBS
Exit /B
-->
<package>
  <job id="VBS">
    <script language="vbscript">
       Dim WshShell : Set WshShell = CreateObject("Wscript.Shell")
       WshShell.Run """C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.exe 'C:\SomePath.xlsm'""", 0, True
    </script>
  </job>
</package>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...