2013-07-24 124 views
5

嘗試應付嘗試打開PowerPoint文件時不斷收到的HRESULT E_FAIL錯誤。有更多的代碼,但是我得到錯誤的基本操作在下面的代碼塊中顯示。正在使用的參考DLL是:Office 14.0.0和Microsoft.Office.Interop.Powerpoint 14.0.0。錯誤HRESULT E_FAIL已從使用C#打開PowerPoint文檔時調用COM組件返回。

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); 

這是一個非常基本的操作,但不知道爲什麼它抱怨COM異常。 機器上安裝了帶有Service Pack 1的Microsoft Office 2010 32位。

+0

你有沒有試過谷歌的「powerpoint 0x80004005」?最常見的錯誤似乎是有人試圖從ASP.NET使用Office interop(這本身就是一個很大的錯誤),並且ASP.NET進程/用戶錯過了訪問文件的權限。 – cremor

+0

是否嘗試從「網絡DTC訪問」中選擇「無需身份驗證」...? –

+0

你有沒有找到一個根本原因的答案呢?我有一個測試用例,即使所有VSTO/COM對象在兩次調用之間被釋放(refcount = 0),第二次調用.Open時也會發生此錯誤。 –

回答

1

在打開演示文稿之前,Powerpoint需要可見。右後創建新Application對象調用此:

application.Visible = MsoTriState.msoTrue; 

如果這仍然不能解決你必須張貼有關異常的更多詳細信息除外。它的某些屬性(或者內部例外)應該說明究竟是什麼失敗了。

+0

這就是它的重點。它從不提供任何明確的例外。我一直在使用至少這個基本的代碼很長一段時間來做複雜的東西,例如刪除元數據信息或將它們保存爲不同的格式。無論是否使應用程序可見,該代碼段都是打開演示文稿的基礎。此錯誤沒有描述,內部異常爲空。不知道機器上安裝的Office應用程序或我最近添加的Service Pack有問題嗎? – phoenix

+0

確切的錯誤:System.Runtime.InteropServices.COMException(0x80004005):錯誤HRESULT E_FAIL h 已從調用COM組件返回。 at Microsoft.Office.Interop.PowerPoint.Presentations.Open(String FileName,Ms oTriState ReadOnly,MsoTriState Untitled,MsoTriState withWindow) – phoenix

+1

FWIW,Powerpoint不需要爲了打開演示文稿而可見,只要打開演示文稿演示文稿無窗口。所有文件或只有一些文件是否出現問題?如果您手動嘗試在PPT中打開相同的文件,會發生什麼情況? –

0

我有同樣的確切問題。我已經搜索了幾天的解決方案。 最後我找到了。

當您安裝MS Office 2010時,您應該在Office CD中一起安裝「Office共享功能」和Powerpoint。 安裝「Office共享功能」後,一切正常。

相關問題