2013-07-24 6 views
5

Cercando di far fronte con errore HRESULT E_FAIL che continuo a ottenere durante l'apertura di un file powerpoint. C'è di più nel codice, ma l'operazione di base per la quale ottengo l'errore è mostrata nel blocco di codice qui sotto. Le DLL di riferimento utilizzate sono: Office 14.0.0 e Microsoft.Office.Interop.Powerpoint 14.0.0.Errore HRESULT E_FAIL è stato restituito da una chiamata a un componente COM durante l'apertura di un documento powerpoint utilizzando C#

Application application = new Application { DisplayAlerts = PpAlertLevel.ppAlertsNone }; 
Presentation powerpoint = application.Presentations.Open(@"X:\XXX\xxx.pptx"); 
powerpoint.SaveAs(@"X:\XXX\saved.pdf", PpSaveAsFileType.ppSaveAsPDF,  MsoTriState.msoTrue); 

È un'operazione molto semplice, ma non è sicuro del motivo per cui si lamenta dell'eccezione COM. Microsoft Office 2010 32 bit con Service Pack 1 è installato sulla macchina.

+0

Hai provato a google per "powerpoint 0x80004005"? L'errore più comune sembra essere che qualcuno cerchi di utilizzare l'interoperabilità di Office da ASP.NET (che è già un grosso errore da solo) e il processo/utente di ASP.NET non ha i diritti per accedere al file. – cremor

+0

hai provato a selezionare 'Nessuna autenticazione richiesta' da 'Accesso rete DTC' ... ?? –

+0

Hai mai trovato una causa per la risposta? Ho un caso in cui questo errore si verifica nella seconda chiamata a .Open, anche se tutti gli oggetti VSTO/COM vengono rilasciati (refcount = 0) tra le due chiamate. –

risposta

1

Il punto di alimentazione deve essere visibile prima di poter aprire una presentazione. Subito dopo la creazione della nuova chiamata Application oggetto questo:

application.Visible = MsoTriState.msoTrue; 

Se questo ancora non risolve l'eccezione dovrete inserire ulteriori dettagli sul eccezione. Da qualche parte nelle sue proprietà (o forse eccezioni interiori) dovrebbe dire cosa ha fallito esattamente.

+0

Beh, questo è il punto. Non fornisce mai eccezioni chiare. Ho usato almeno questo codice di base per un bel po 'di tempo per fare cose complesse con le presentazioni come la rimozione delle informazioni sui metadati o il salvataggio come formato diverso. Lo snippet è molto semplice per aprire una presentazione indipendentemente dal rendere l'applicazione visibile o meno. Questo errore non ha descrizione, l'eccezione interna è nulla. Non sei sicuro se c'è un problema con l'applicazione Office installata sul computer o il service pack che ho aggiunto di recente? – phoenix

+0

L'errore esatto: System.Runtime.InteropServices.COMException (0x80004005): Errore HRESULT E_FAIL h come restituito da una chiamata a un componente COM. in Microsoft.Office.Interop.PowerPoint.Presentations.Open (String FileName, Ms oTriState ReadOnly, MsoTriState Untitled, MsoTriState WithWindow) – phoenix

+1

FWIW, Powerpoint non deve essere visibile per aprire le presentazioni, purché si apra il presentazioni con una finestra. Il problema si verifica su tutti i file o solo su alcuni? Cosa succede se provi manualmente ad aprire gli stessi file in PPT? –

0

Ho avuto lo stesso esatto problema. Ho cercato la soluzione per qualche giorno. Finalmente l'ho trovato.

Quando si installa MS Office 2010, è necessario installare insieme "Funzionalità condivise di Office" con Powerpoint in Office. Dopo aver installato "Funzionalità condivise di Office", tutto è OK.

Problemi correlati