VB.NET图表数据的关闭工作簿

问题描述 投票:0回答:1

我希望你们都安全健康!

我想做什么:使用VB.NET,我打开Powerpoint模板并更新位于该模板中的图表。奇怪的是,直到最近,它仍然可以正常工作,但让我们暂时忘记它。

问题出在哪里?:问题开始了,任务结束了->完成更新后,我似乎无法关闭chartData的工作簿。我收到以下错误消息:

System.Runtime.InteropServices.COMException:HRESULT的值:0x800A03EC

我的代码(简化)看起来像这样:(错误出现在代码底部)

'Preparing the Variables
Dim j As Integer
Dim slide = pp.Slides(1)
Dim shape = slide.Shapes
slide = pp.Slides(5)
shape = slide.Shapes
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Dim chart As PowerPoint.Chart

'Prepare the Chart
chart = shape.Item("Diagramm 13").Chart
'Access the ChartData
chart.ChartData.Activate()
wb = CType(chart.ChartData.Workbook, Excel.Workbook)
ws = CType(wb.Sheets(1), Excel.Worksheet)
ws.UsedRange.ClearContents()

wb.Close()     '<--This is where it stops and throws a 
               '"System.Runtime.InteropServices.COMException: HRESULT: 0x800A03EC" Exception
wb = Nothing

我已经尝试过的内容:

  • 我尝试在ChartData.Activate()行之后立即关闭它
  • 我尝试用“ chart.ChartData.Workbook.Close”代替ChartData.Activate()行后关闭它
  • 关闭前再次激活wb
  • [通过在变量上写入wb.name来检查wb的名称是否有所改变->看起来像它的正确名称。

您知道这里出什么问题了吗?这里是如果需要,我可以提供更多信息!

感谢您的帮助和时间,

最好,亚历克斯

UPDATE:

我今天早些时候创建了一个发行版,因为我没想到那些问题。当我当时正在修复它们时,我的一位同事实际上能够无错误地运行该发行版....我现在完全感到困惑。这样的简单代码是否可以由于我的计算机上的一些随机更新而实际上停止工作?

.net excel vb.net powerpoint excel-interop
1个回答
0
投票

这里有同样的问题! (在C#中,但这没关系)

我为一位客户开发了PowerPoint加载项。它从Excel文件读取并使用Excel中的数据创建表或图表。一切正常运行了一年多,但是〜2周前,当我尝试关闭工作簿时,我遇到了相同的COM异常。

代码段:

var slide = (PowerPoint.Slide)powerpointApp.ActiveWindow.View.Slide as PowerPoint.Slide;
PowerPoint.Shape shape = slide.Shapes.AddChart2(-1, XlChartType.xlXYScatterLinesNoMarkers);
var chart = shape.Chart;
var chartData = chart.ChartData;
var chartWorkbook = (Excel.Workbook)chartData.Workbook;
...
chartWorkbook.Close();

这肯定与Office更新有关!我的加载项仍对我的一位客户员工有效。

他的Office版本:16.0.12624.20348

我的Office版本:16.0.12624.20422

不幸的是,我无法确定这些版本之间的变化。

将让您保持更新...:)

© www.soinside.com 2019 - 2024. All rights reserved.