Por que o Excel não pode abrir um arquivo quando executado no agendador de tarefas?

11

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

zrz
fonte
Qual conta de usuário é usada para executar a tarefa agendada?
Massimo
Usei a conta de administrador do domínio e parecia ser o problema. Usando o grupo de administradores de domínio funcionou. Mas agora eu tinha que descobrir por que a autorização de acesso ao DCOM tem um problema com a conta de administrador do domínio.
ZRZ

Respostas:

8

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.

  1. Abra Serviços de Componentes (Iniciar -> Executar, digite dcomcnfg)
  2. Faça uma busca detalhada em Serviços de componentes -> Computadores -> Meu computador e clique em DCOM Config
  3. Clique com o botão direito do mouse no aplicativo Microsoft Excel e escolha Propriedades
  4. Na guia Identidade, selecione Este usuário e insira o ID e a senha de uma conta de usuário interativa (domínio ou local) e clique em OK

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.

squillman
fonte
Obrigado por apontar dcomcnfg. Eu tive que adicionar manualmente o aplicativo do Excel no registro para poder vê-lo no dcomcnfg; tentei alterar as configurações de identidade, mas também não funcionou. No dcomcnfg, examinei a Autorização de acesso: o administrador do domínio estava na lista e tinha acesso local e remoto, mas havia um pequeno sinal vermelho (cruz branca dentro de um disco vermelho) sobre seu ícone. Não sei por que, mas de alguma forma há um problema com a conta do Administrador do Domínio. Adicionar a conta do grupo Administradores de Domínio e executar a tarefa a partir desse grupo é uma solução alternativa.
ZRZ
35

Crie estas duas pastas:

32Bit:

C:\Windows\System32\config\systemprofile\Desktop  

64Bit:

C:\Windows\SysWOW64\config\systemprofile\Desktop

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.

Eric
fonte
MUITO OBRIGADO. Passei HOURS tentando fazer o Excel trabalhar em um script TaskScheduler - me deixando LOUCO.
Guy
1
Eu só quero acrescentar que a Microsoft não endossa a execução de nenhum componente do Office de maneira não interativa, mas é possível contorná-lo em muitos casos.
precisa
1
Normalmente, eu não posto spam de "obrigado", mas, para isso, é preciso. É inacreditável que o Excel simplesmente não funcione quando uma pasta vazia não existe ao executar no modo não interativo, enquanto está completamente bem no modo normal. Realmente requer crença de mendigo.
precisa saber é
5
Isso é uma mágica seriamente negra. Não sei o que é mais assustador - que o Excel precisava dessa pasta nesse cenário ou que alguém sabia que o Excel precisava dessa pasta nesse cenário.
Rich C
1
Como posso retribuir você? Dinheiro, cartão de crédito, cartões de pokemon, primogênitos?
steenbergh
3

Ao definir permissões DCOM, se o Microsoft Excel não aparecer na dcomcnfgtentativammc comexp.msc /32

referência

cmo
fonte
Esta foi a peça que faltava para mim - obrigado!
John M