При использовании функционального идентификатора приложения не удалось создать объект для WScript.CreateObject («Excel.Application»). - PullRequest
0 голосов
/ 17 сентября 2018
  • Maestro работает с функциональным идентификатором приложения и вызывает файл сценария Powershell
    • Файл сценария PS вызывает пакетный файл - Run.bat
      • Пакетный файл вызывает файл сценария Windows (cscript.exe ...xxx.wsf)
        • WSF запускает программу VBS
          • Он вызывает макрос Excel.

Но программа VBS завершается ошибкой на этапе, на котором она пытается создать объект Excel, и выдает сообщение «Не удалось создать объект с именем excel.Application».

Этот скрипт работает, когда пользователь вручную запускает файл run.bat.

Maestro также работает, когда для входа на сервер использовались учетные данные идентификатора функционального приложения, в то время как maestro запускает файл Run.batch.

Пожалуйста, помогите, почему maestro не смог создать объект Excel в неинтерактивном режиме, то есть пользователь, который запускает процесс, не вошел в систему на сервере.

Код в файле run.bat:

cscript.exe ..\..\run.wsf

Код в файле run.wsf:

<script language="vbscript" src="..\Run.vbs"></script>

Код в файле run.vbs:

Dim xlApp, xlBook
Set xlApp = WScript.CreateObject("Excel.Application") -- Program fails here
Set xlBook = xlApp.Workbooks.Open(fnGetAbsolutePath(xlsFile))

1 Ответ

0 голосов
/ 27 сентября 2018

Я нашел проблему. Настройки dcom-удостоверения Excel были установлены как «интерактивный пользователь» на этом сервере, что приводило к тому, что неинтерактивные запросы Excel выполнялись с использованием интерактивного идентификатора пользователя. Когда я изменил настройку ниже, это сработало.

1: запустить-> запустить и набрать 'DCOMCNFG'

2: Откройте «DCOM Config» и найдите «Приложение Microsoft Excel»

3: установить его идентификацию как «запускающий пользователь».

...