日期:2014-05-17  浏览次数:21108 次

VS2005 开发 PowerPoint 中PowerPoint.ChartData的问题,COM 组件的调用返回了错误 HRESULT E_FAIL
各位大侠:我最近使用 VS2005 开发PowerPoint  数据 获取 图表信息的时候遇到了问题。
首先shape.Type == MsoShapeType.msoChart 判断当前的数据是图表类型

然后使用一下代码:
PowerPoint.Chart oChart = shape.Chart;
PowerPoint.ChartData oChartData = oChart.ChartData;
Excel.Workbook oWB = (Excel.Workbook)oChartData.Workbook;
Excel.Worksheet oWS = (Excel.Worksheet)oWB.Worksheets[1];

但是获取oChart.ChartData的时候 提示错误信息:
System.Runtime.InteropServices.COMException (0x80004005): 对 COM 组件的调用返回了错误 HRESULT E_FAIL。
在 Microsoft.Office.Interop.PowerPoint.ChartData.get_Workbook()

获取shape.Chart的时候查询这个对象的属性就看到获取的时候就出错了,

ErrorCode -2147467259 对 COM 组件的调用返回了错误 HRESULT E_FAIL。

也使用了一下方法未果:
1)确保“Distributed Transaction Coordinator”服务是开启的。

  2) 在运行中录入“dcomcnfg",打开组件服务字符串,选择组件服务--->计算机--->我的电脑--->右击属性--->选择MSDTC--->选择安全配置 勾选事务管理器通信中的允许出站、允许入站和不要求进行验证。

请各位大侠帮忙啊!
------解决方案--------------------
该回复于2011-04-08 13:25:07被版主删除
------解决方案--------------------
问题已经解决!数据不能直接通过这段代码直接获取,

PowerPoint.Chart oChart = shape.Chart;
PowerPoint.ChartData oChartData = oChart.ChartData;
Excel.Workbook oWB = (Excel.Workbook)oChartData.Workbook;
Excel.Worksheet oWS = (Excel.Worksheet)oWB.Worksheets[1];

需要在中间增加一个 oChartData.Activate(); 激活一下!打开excel 就可以编辑了!
之前进入了误区!
------解决方案--------------------
你好,我最近也想实现一个关于PowerPoint生成统计表的功能。但是找了很多参考代码都没有实现我要的效果。我从Excel中读出数据,然后根据http://support.microsoft.com/kb/222960/zh-cn实现在PowerPoint生成统计表。但是发现所有的教程里面根本不会对其生成的表进行数据的填充,都是自动生成的数据好像。但是看到你这好像对数据进行了操作,但是还没看太懂。不知道可否教我一下怎么操作或者给我发下你的部分相关代码让我参考下!相当感谢!
------解决方案--------------------
兄弟,感谢你的这个问题,我按照你的chartData.Activate();就成功解决了我的问题!谢了