8

Actualmente estoy desarrollando una secuencia de comandos que toma un documento de Word, lo abre en Word y luego imprime el archivo de Word como PDF. Todo funciona bien cuando se ejecuta manualmente en mi máquina o en el servidor. El problema aparece cuando intento ejecutarlo como una tarea programada.Word Interop no funciona en una tarea programada

Uno de los requisitos es que esto debe hacerse todas las noches sin ninguna intervención. Cuando configuré una tarea de programación para hacer esto y establecí las opciones de seguridad en "Ejecutar solo cuando el usuario inició sesión" todo funciona bien. El problema es que esto debe ejecutarse con o sin que alguien inicie sesión. Si fijo la tarea de "Ejecutar si el usuario está conectado o no", el guión falla en la línea siguiente:

wordDoc = MSWord.Documents.Open(ref fileToConvert, ref refFalse, ref refTrue, 
           ref RN, ref RN, ref RN, ref RN, ref RN, 
           ref RN, ref RN, ref RN, ref RN, ref RN, 
           ref RN, ref RN, ref RN); 

MSWord.Documents.Open() obras, pero devuelve un valor nulo.

Esta tarea se ejecuta en Windows Server 2008 con Office 2007.

¿Existe otro enfoque debería de tomar para esto?

+0

que tenían el mismo problema, pasado las edades tratando de resolverlo, bajó varios callejones sin salida, y, finalmente, la "solución" que terminó con era: no usar Windows Servidor 2008. Si encuentra una solución a esto, seré todo oídos. –

+0

¿Funciona si no está utilizando Server 2008? –

+0

En el servidor de Windows 2003 o en XP, sí. No estoy seguro acerca de Vista. –

Respuesta

3

Creo que muchas personas han intentado hacer algo parecido a lo que está intentando y ha fallado. Se habla mucho acerca de no poder ejecutar ninguna solución basada en interoperabilidad de oficina en un modo de servidor (sin supervisión, etc.).

Ver here y here

Sé que esto probablemente no es la respuesta que estabas buscando pero sin embargo es cómo es!

+0

Estaba buscando alguna respuesta. No pude encontrar ninguna información con respecto a lo que estaba sucediendo en un montón de búsquedas de Google, así que gracias por su aporte. Voy a darle unas horas más y si no se publica una "solución", marcaré la tuya como la respuesta. –

+0

Buenos enlaces e información –

21

Tuve problemas para automatizar Office desde un servicio de Windows en Windows Server 2008, aunque funciona bien en Windows Server 2003. El problema también ocurre en la llamada abierta, aunque en realidad plantea una excepción en lugar de simplemente devolver un valor nulo . De todos modos, es posible que desee probar esto ...

Intenté seguir el consejo dado por H Ogawa en this MSDN thread, y pareció funcionar. Es extraño, pero felicitaciones al Sr. Ogawa por descubrirlo.

Resumen de la 'Ogawa Hack': crear una carpeta de escritorio para el perfil del sistema, ya sea como

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

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

... dependiendo de si usted tiene 64 bits Windows.

Además, la carpeta necesita permiso de escritura para cualquier usuario que esté "controlando" Office.

[Editar: corregido enlace URL]

+1

Gracias por eso. Tendré que echar un vistazo tan pronto como el tiempo lo permita. Volveré a publicar si funciona o no. –

+0

¡Funciona maravillosamente! Esto me ahorró un montón de dolores de cabeza (adicionales) con esto ... ahora esperemos que nada se interrumpa realmente al ejecutar Word desde un servicio. –

+3

Funcionó para mí, pero tuve que agregar el usuario al grupo de administración local y marcar la opción "Ejecutar con los privilegios más altos". –

Cuestiones relacionadas