Eu escrevi um script do PowerShell que abre uma pasta de trabalho do Excel e executa uma macro. Quando executo esse script no console PS ou mesmo na linha de comando usando o powershell.exe script.ps1, ele funciona. Quando eu configuro uma tarefa no agendador de tarefas do Windows, ele gera uma exceção sobre esse arquivo do Excel, dizendo que ele não existe ou já está em uso.
O arquivo existe com certeza, pois o script é executado a partir da linha de comando e tenho certeza de que não está em uso.
Tentei mover o arquivo do Excel para uma área local e sem privilégios, para evitar problemas de confiança na rede / privilégios de administrador. A tarefa ainda é executada com os privilégios mais altos. O caminho não possui espaços ou caracteres especiais.
Quando tento acessar o arquivo usando um objeto do sistema de arquivos, não há erros, mesmo quando executados no agendador, então acho que é específico ao método Excel.Application.Workbooks.Open ("..").
O que devo considerar agora?
desde já, obrigado
Respostas:
Provavelmente é um problema de permissões do DCOM. Às vezes, automatizar o Excel é repleto de perigos ...
A única maneira de encontrar problemas como esse é definir o Excel para ser executado como um usuário específico por meio de permissões do DCOM.
Infelizmente, mantê-lo como usuário interativo ou iniciar não funciona com o agendador de tarefas, mesmo ao configurar a tarefa para ser executada em uma conta que tenha acesso de administrador à máquina.
fonte
Crie estas duas pastas:
32Bit:
64Bit:
O Excel precisa dessas pastas se não for executado interativamente. Crie as duas pastas, mesmo se você estiver em um sistema operacional de 64 bits.
fonte
Ao definir permissões DCOM, se o Microsoft Excel não aparecer na
dcomcnfg
tentativammc comexp.msc /32
referência
fonte