Escribí un script de PowerShell que abre un libro de Excel y ejecuta una macro. Cuando ejecuto ese script desde la consola PS, o incluso desde la línea de comandos usando powershell.exe script.ps1, simplemente funciona. Cuando configuro una tarea desde el programador de tareas de Windows, genera una excepción sobre ese archivo de Excel, diciendo que no existe o que ya está en uso.
El archivo existe con seguridad, ya que el script se ejecutó bien desde la línea de comandos, y estoy seguro de que no está en uso.
Traté de mover el archivo de Excel a un área local y no privilegiada, para evitar problemas de confianza de red / privilegios de administrador. La tarea aún se ejecuta con los más altos privilegios. La ruta no tiene espacios ni caracteres especiales.
Cuando intento acceder al archivo usando un objeto del sistema de archivos, no hay errores incluso cuando se ejecuta desde el planificador, por lo que supongo que es específico del Excel.Application.Workbooks.Open("..")
método.
¿Qué debo considerar ahora?
Respuestas:
Es probable que sea un problema de permisos DCOM. La automatización de Excel a veces está llena de peligros ...
La única forma en que he encontrado problemas como este es configurar Excel para que se ejecute como un usuario específico a través de permisos DCOM.
Desafortunadamente, mantenerlo como el usuario interactivo o el inicio no funciona con el programador de tareas, incluso cuando configura la tarea para que se ejecute en una cuenta que tiene acceso de administrador a la máquina.
fuente
Crea estas dos carpetas:
32Bit:
64Bit:
Excel necesita estas carpetas si no se ejecuta de forma interactiva. Cree ambas carpetas incluso si está en un sistema operativo de 64 bits.
fuente
Al configurar permisos DCOM, si Microsoft Excel no aparece en
dcomcnfg
trymmc comexp.msc /32
referencia
fuente