8

Attualmente sto sviluppando uno script che accetta un documento di Word, lo apre in Word e quindi stampa il file di Word come PDF. Tutto funziona alla grande quando viene eseguito manualmente sul mio computer o sul server. Il problema arriva quando tento di eseguirlo come operazione pianificata.Word Interop non funziona in un'attività pianificata

Uno dei requisiti è che questo dovrebbe essere fatto di notte senza alcun intervento. Quando imposto un'attività di pianificazione per eseguire questa operazione e impostare le opzioni di sicurezza su "Esegui solo quando l'utente è connesso", tutto funziona correttamente. Il problema è che questo deve essere eseguito con o senza che qualcuno sia connesso. Se ho impostato il compito di "Run se l'utente è connesso o no", lo script non riesce sulla riga seguente:

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() opere, ma restituisce null.

Questo compito è in esecuzione su Windows Server 2008 con Office 2007.

c'è un altro approccio dovrei prendere per questo?

+0

ho avuto lo stesso identico problema, ha trascorso età cercando di risolverlo, è andato giù vari vicoli ciechi, e, infine, la "soluzione" Ho finito con era: non utilizzare Windows Server 2008. Se trovi una soluzione a questo, sarò tutto orecchie. –

+0

Quindi funziona se non stai usando Server 2008? –

+0

Su server Windows 2003 o su XP, sì. Non sono sicuro di Vista. –

risposta

3

Credo che molte persone abbiano provato a fare qualcosa di simile a quello che si sta tentando e fallendo. Ci sono un sacco di chiacchiere su non essere in grado di eseguire qualsiasi soluzione basata su interoperabilità da ufficio in una modalità simile a un server (non presidiata, ecc.).

Vedi here e here

So che questo non è probabilmente la risposta che stavate cercando, ma è comunque come è!

+0

Stavo cercando una risposta. Non sono riuscito a trovare alcuna informazione su ciò che stava accadendo da un gruppo di ricerche su Google, quindi grazie per il tuo contributo. Ho intenzione di dargli qualche ora in più e se una "soluzione" non viene pubblicata, contrassegnerò la tua come risposta. –

+0

Buoni collegamenti e informazioni –

21

Ho avuto problemi nell'automazione di Office da un servizio Windows in Windows Server 2008, anche se funziona correttamente con Windows Server 2003. Il problema si verifica anche nella chiamata Open, anche se in realtà genera un'eccezione piuttosto che semplicemente restituire null . Comunque, potresti provare questo ...

Ho provato a seguire il consiglio dato da H Ogawa nel this MSDN thread, e sembrava funzionare. È bizzarro, ma complimenti a Mr. Ogawa per averlo scoperto.

Sintesi della 'Ogawa Hack': creare una cartella sul desktop per il profilo di sistema, sia come

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

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

... a seconda se si dispone di 64 bit Finestre.

Inoltre, la cartella richiede il permesso di scrittura per qualsiasi utente che sta "guidando" Office.

[Edit: corretto URL del link]

+1

Grazie per quello. Dovrò dare un'occhiata non appena il tempo lo consente. Pubblicherò di nuovo se funziona o no. –

+0

Funziona meravigliosamente! Questo mi ha salvato tonnellate di (ulteriore) mal di testa con questo ... ora speriamo che nulla in realtà si interrompa dall'esecuzione di Word da un servizio. –

+3

Ha funzionato per me, ma ho dovuto aggiungere l'utente al gruppo di amministrazione locale e controllare l'opzione "Esegui con i privilegi più alti". –