8

Je développe actuellement un script qui prend un document Word, l'ouvre dans Word et imprime le fichier Word au format PDF. Tout fonctionne très bien lorsqu'il est exécuté manuellement sur ma machine ou sur le serveur. Le problème survient lorsque je tente de l'exécuter en tant que tâche planifiée.L'interopérabilité Word ne fonctionne pas dans une tâche planifiée

L'une des exigences est que cela devrait être fait tous les soirs sans aucune intervention. Lorsque je configure une tâche de planification pour cela et que vous définissez les options de sécurité sur "Exécuter uniquement lorsque l'utilisateur est connecté" tout fonctionne correctement. Le problème est, cela doit être exécuté avec ou sans quelqu'un étant connecté. Si je mets la tâche « Exécuter si l'utilisateur est connecté ou non », le script échoue sur la ligne suivante:

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() œuvres, mais renvoie la valeur null.

Cette tâche est en cours d'exécution sur Windows Server 2008 avec Office 2007.

Y at-il une autre approche que je devrais prendre pour cela?

+0

J'ai eu exactement le même problème, a passé les âges essayer de le résoudre, est descendu diverses impasses, et finalement la « solution » J'ai fini avec était: ne pas utiliser Windows Server 2008. Si vous trouvez une solution à cela, je serai tout ouïe. –

+0

Cela fonctionne-t-il si vous n'utilisez pas Server 2008? –

+0

Sur un serveur Windows 2003 ou XP, oui. Pas sûr de Vista. –

Répondre

3

Je crois que beaucoup de gens ont essayé de faire quelque chose de proche de ce que vous essayez et ont échoué. Il y a beaucoup de bavardage sur le fait de ne pouvoir exécuter aucune solution basée sur l'interopérabilité de bureau dans un mode semblable à un serveur (sans surveillance, etc.).

Voir here et here

Je sais que ce n'est probablement pas la réponse que vous cherchez, mais il est quand même comment il est!

+0

Je cherchais une réponse. Je n'ai pas pu trouver d'informations sur ce qui se passait à partir d'un tas de recherches Google, merci de votre contribution. Je vais lui donner quelques heures de plus et si une "solution" n'est pas affichée, je la marquerai comme la réponse. –

+0

Bons liens et info –

21

J'ai eu des problèmes pour automatiser Office à partir d'un service Windows sous Windows Server 2008, même si cela fonctionne correctement sous Windows Server 2003. Le problème se produit également lors de l'appel Open, même s'il déclenche une exception. . Quoi qu'il en soit, vous pourriez vouloir essayer ceci ...

J'ai essayé de suivre les conseils donnés par H Ogawa dans this MSDN thread, et cela a semblé fonctionner. C'est bizarre, mais félicitations à M. Ogawa pour l'avoir découvert.

Résumé de la 'Ogawa Hack': créer un dossier de bureau pour le profil système, soit comme

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

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

... selon que vous avez 64 bits Les fenêtres.

De plus, le dossier doit être autorisé en écriture pour tout utilisateur qui "conduit" Office.

[Edit: URL du lien corrigé]

+1

Merci pour cela. Je vais devoir jeter un coup d'oeil dès que le temps le permettra. Je posterai si cela fonctionne ou pas. –

+0

Fonctionne à merveille! Cela m'a sauvé des tonnes de maux de tête (supplémentaires) avec ceci ... maintenant espérons que rien n'interrompe réellement l'exécution de Word à partir d'un service. –

+3

Cela a fonctionné pour moi, mais j'ai dû ajouter l'utilisateur au groupe Admin local et cocher l'option "Exécuter avec les privilèges les plus élevés". –

Questions connexes