Não é possível executar o batch iniciando o Excel como tarefa agendada

2

Eu tenho o seguinte Skript que foi executado anteriormente manualmente:

set DIR="X:\SYSTEM\MAKROS"
X:
cd %DIR%
start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA

Quando iniciado manualmente, isso funciona bem. O BSYSTEM.XLA faz parte de um sistema de gerenciamento de projetos baseado em Excel, portanto, não posso exportar o arquivo para um formato de arquivo diferente.

Agora preciso executar esse script diariamente. Ao criar uma tarefa agendada para executar este .bat -file, isso simplesmente não funciona. A tarefa termina dentro de alguns segundos (normalmente o script leva cerca de 10 minutos para ser concluído) com o código de resultado da última execução 0x1 e o histórico da tarefa não mostra nada de útil:

Eujátenteicriarumatarefaqueexecutadiretamenteo"C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" /e-GENERATE_REPORTS BSYSTEM.XLA , mas isso só faz com que isso seja mostrado no histórico:

Task Scheduler failed to launch action "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" in instance "{1fbeadd0-605b-4fe0-8d96-621281c53519}" of task "\Allgemein\TMG Bericht". Additional Data: Error Value: 2147942667.

Eu também tentei um script vbs como este:

set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
xlApp.Run "GENERATE_REPORTS"
xlBook.Close
xlApp.Quit

Mas desta forma eu recebo o erro The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled , o que não é verdade, pois funciona bem com o script obove sendo chamado manualmente. A unidade de rede a partir da qual o arquivo é criado é definida como "local confiável".

Curiosamente, quando eu abro BSYSTEM.XLA eu não vejo nenhuma folha, apenas um arquivo excel com todos elemnts acinzentado exceto o botão makro e ao tentar dar uma olhada nas macros eu não vejo nenhum. É por isso que estou lutando para entender o que o start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA faz mesmo ..

Eu realmente não consegui encontrar nada de útil sobre as opções de linha de comando do Excel, exceto estes dois documentos:

O que posso fazer para fornecer uma alternativa em script ao script btach acima para que eu possa executar esse comando como uma tarefa agendada ou o que posso fazer para corrigir o vbs?

    
por farosch 22.07.2018 / 23:57

2 respostas

0

Já que com este comando o Excel precisa exibir uma UI, a tarefa não pode ser executada em segundo plano, o que é automaticamente o caso quando Run whether user is logged on or not é selecionado nas propriedades da tarefa. Depois de definir essa opção, tudo funcionou como esperado:

Paraqueatarefapossaserexecutadaapósareinicializaçãodoservidor,euhabiliteiologinautomáticocom ferramenta .

    
por 01.09.2018 / 09:58
2

Seu script do VBA está falhando porque o xlBook não é o objeto correto para suportar o método Run.

Tente

xlApp.Run "GENERATE_REPORTS"

Alternativas para acima

  • Se sua macro estiver em um módulo xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS" 'observe o formato de' workbookName '! macro

  • Se sua macro estiver em uma planilha 'xlApp.Run "'BSYSTEM.xls'!sheet1.GENERATE_REPORT"

Extensões de arquivo

.xla é um formato de arquivo do Excel Add-In, você pode tentar salvá-lo como um .xlam que é um formato habilitado para macro de xla.

Quebra de código

set xlApp = CreateObject("Excel.Application") ' Cria o processo do aplicativo do Excel .

xlApp.Visible = True 'Permite que o aplicativo seja visualizado / editado .

set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA") ' Abre uma pasta de trabalho especificada dentro do Aplicativo do Excel que acabou de ser aberto.

xlApp.Run "GENERATE_REPORTS" ' Executa o comando da macro GENERATE_REPORTS.

xlBook.Close 'Fecha a pasta de trabalho.

xlApp.Quit 'Termina o processo de inscrição do Excel.

    
por 23.07.2018 / 03:29