C# 使用C打开powerpoint文档时调用COM组件返回错误HRESULT E_FAIL#

C# 使用C打开powerpoint文档时调用COM组件返回错误HRESULT E_FAIL#,c#,ms-office,powerpoint,C#,Ms Office,Powerpoint,尝试处理我在尝试打开powerpoint文件时不断遇到的HRESULT E_失败错误。还有更多的代码要编写,但是我得到错误的最基本的操作显示在下面的代码块中。正在使用的参考DLL有:Office 14.0.0和Microsoft.Office.Interop.Powerpoint 14.0.0 Application application = new Application { DisplayAlerts = PpAlertLevel.ppAlertsNone }; Presentation

尝试处理我在尝试打开powerpoint文件时不断遇到的HRESULT E_失败错误。还有更多的代码要编写,但是我得到错误的最基本的操作显示在下面的代码块中。正在使用的参考DLL有:Office 14.0.0和Microsoft.Office.Interop.Powerpoint 14.0.0

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异常。
计算机上已安装Microsoft Office 2010 32位with Service Pack 1。

Powerpoint必须可见才能打开演示文稿。在创建新的
应用程序
对象后,立即调用以下命令:

application.Visible = MsoTriState.msoTrue;

如果这仍然不能解决异常,您将不得不发布有关异常的更多详细信息。在它的属性(或者内部异常)中的某个地方,它应该指出到底是什么失败了。

我也有同样的问题。我已经找了几天的解决办法了。 我终于找到了

安装MS Office 2010时,应将“Office共享功能”与Office CD中的Powerpoint一起安装。
安装“Office共享功能”后,一切正常。

这就是问题所在。它从未提供任何明确的例外情况。我已经使用了至少一段时间的基本代码来处理演示文稿中的复杂内容,比如删除元数据信息或将其保存为不同的格式。无论应用程序是否可见,该代码段都是打开演示文稿的基础。此错误没有说明,内部异常为空。不确定计算机上安装的Office应用程序或我最近添加的service pack是否有问题?确切错误:System.Runtime.InteropServices.COMException(0x80004005):错误HRESULT E_FAIL h,因为调用COM组件返回。在Microsoft.Office.Interop.PowerPoint.Presentations.Open(字符串文件名、Ms oTriState只读、MsoTriState无标题、MsoTriState WithWindow)FWIW中,只要您在没有窗口的情况下打开演示文稿,PowerPoint就不必可见。问题是发生在所有文件上还是仅发生在部分文件上?如果您手动尝试在PPT中打开相同的文件,会发生什么情况?@SteveRindsberg要在没有窗口的情况下打开演示文稿,您必须在
open
调用中指定
WithWindow
参数,并使用值
MsoTriState.msoFalse
。因为问题中的代码没有包含这个参数,我假设他想要一个可见的窗口。你们都站在有效的点上@史蒂夫-我已经尝试了所有的文件。问题在于所有的文件——我已经尝试过所有格式的文件,如ppt/pptx/pptm——也尝试过手动打开文件。我已尝试重新安装Office 2010-确保所有组件(包括VBA组件)都已正确安装。同时确保VSTO安装正确。代码可以启动应用程序,但无法打开文件。我确信有什么东西弄乱了注册表设置-所以我只是验证设置。我会让你随时更新。你有没有试过在谷歌上搜索“powerpoint 0x80004005”?最常见的错误似乎是有人试图从ASP.NET使用Office interop(这本身已经是一个很大的错误),而ASP.NET进程/用户失去了访问该文件的权限。您是否尝试从“网络DTC访问”中选择“无需验证”…?您是否找到了此问题的根本原因?我有一个测试用例,在第二次调用.Open时发生此错误,即使在两次调用之间释放了所有VSTO/COM对象(refcount=0)。我也遇到了同样的问题,正如上面在安装“Office共享功能”后建议的那样它成功了。我们必须注册一个帐户,停止潜伏,只是为了说明用“Office共享功能”重新安装Office可以解决问题。还有一些评论,但我确认,一旦包含此功能,您不需要以可见模式打开ppt。(Office 2010)请向上投票给男生的答案,因为它不在本帖的顶端。