VBA自动化期间Powerpoint崩溃

时间:2018-11-12 21:16:29

标签: excel vba powerpoint

我有一个Excel宏,该宏使用带有图表对象的现有Powerpoint模板,并使用Excel工作表中的数据编辑每个图表的数据。代码遍历工作表中的“ n”行,为每个Excel行创建一系列4张幻灯片。

奇怪的是,对于某些行,集合中的一张或多张幻灯片会产生“ Excel停止工作”错误,但数据似乎已正确安装。但是,问题点是间歇性的并且有些随机的“ Powerpoint已停止工作”错误。 Powerpoint错误完全使Powerpoint崩溃。当我到达50左右滑动标记时,似乎都发生了这两种情况。

以下是该集中第4个代码的示例。其他的几乎相同:

oPPT.ActiveWindow.View.GotoSlide Index:=5 + (4 * dIndex)

' SET OBJECT & CHART REFERENCES
Set shapeObject = oPPT.ActivePresentation.Slides(5 + (4 * dIndex)).Shapes("Chart 4")
Set myChart = shapeObject.Chart
Set gChartData = myChart.ChartData
Set gWorkbook = gChartData.Workbook
Set gWorksheet = gWorkbook.Worksheets(1)

' SET VALUES 
gWorksheet.Range("B2").Value = myWs.Range("Y" & dRow).Value
gWorksheet.Range("B3").Value = myWs.Range("AA" & dRow).Value
gWorksheet.Range("B4").Value = myWs.Range("Z" & dRow).Value
gWorksheet.Range("B5").Value = myWs.Range("X" & dRow).Value

Set shapeObject = Nothing
Set myChart = Nothing
Set gChartData = Nothing
Set gWorksheet = Nothing
gWorkbook.Close
Set gWorkbook = Nothing

错误是完全随机的,并且每次都在不同的迭代中发生。我发现我第一次运行永远不会产生PPT停止工作错误。随后的可能。

有什么想法吗?我对这里发生的事情感到困惑。

请注意,在迭代Excel工作簿之前,我将模板集复制为所需数量的集。例如,如果Excel工作表有10行,则在对底图数据进行任何编辑之前,我会重复4次模板幻灯片10次。

是否可能存在计时问题?

1 个答案:

答案 0 :(得分:2)

似乎缺少的一件事是在访问嵌入式工作表之前的激活调用:

gChartData.Activate

这也许可以解释崩溃的问题。 cf. https://msdn.microsoft.com/de-de/vba/powerpoint-vba/articles/chartdata-activate-method-powerpoint

欢呼 詹斯