VB.NET 关闭 Chartdata 工作簿
VB.NET Closing Workbook of Chartdata
希望大家平安健康!
我想做什么:
使用 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() 行后立即关闭它
- 我尝试在 ChartData.Activate() 行之后用 "chart.ChartData.Workbook.Close" 代替
关闭它
- 在关闭之前再次激活 wb
- 通过在变量上写入 wb.name 检查 wb 的名称是否以某种方式更改 -> 看起来是正确的名称。
你知道这里出了什么问题吗?
这里是
如果需要,我可以提供更多信息!
感谢您的帮助和时间,
最好的,
亚历克斯
更新:
我今天早些时候创建了一个版本,因为我没想到会出现这些问题。当我当时正在修复它们时,我的一位同事实际上能够 运行 没有错误地发布......我现在完全困惑了。这么简单的代码真的会因为我电脑上的一些随机更新而停止工作吗?
我遇到了同样的问题(在 C# 中)。
正在替换...
wb.Close()
...与...
wb.Application.Quit()
...解决了我的问题!
遗憾的是我无法尝试 Marco Hönsch 提供的建议。
我重新安装了 Office 并将其从 Office 16 升级到 Office 19。
代码立即再次生效。
遗憾的是,我无法提供准确的答案,因为它可能是损坏的办公室,导致了这个错误。或者是office版本本身的问题
不管怎样,现在都可以了。
希望大家平安健康!
我想做什么: 使用 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() 行后立即关闭它
- 我尝试在 ChartData.Activate() 行之后用 "chart.ChartData.Workbook.Close" 代替 关闭它
- 在关闭之前再次激活 wb
- 通过在变量上写入 wb.name 检查 wb 的名称是否以某种方式更改 -> 看起来是正确的名称。
你知道这里出了什么问题吗? 这里是 如果需要,我可以提供更多信息!
感谢您的帮助和时间,
最好的, 亚历克斯
更新:
我今天早些时候创建了一个版本,因为我没想到会出现这些问题。当我当时正在修复它们时,我的一位同事实际上能够 运行 没有错误地发布......我现在完全困惑了。这么简单的代码真的会因为我电脑上的一些随机更新而停止工作吗?
我遇到了同样的问题(在 C# 中)。
正在替换...
wb.Close()
...与...
wb.Application.Quit()
...解决了我的问题!
遗憾的是我无法尝试 Marco Hönsch 提供的建议。
我重新安装了 Office 并将其从 Office 16 升级到 Office 19。 代码立即再次生效。 遗憾的是,我无法提供准确的答案,因为它可能是损坏的办公室,导致了这个错误。或者是office版本本身的问题
不管怎样,现在都可以了。