我有一个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次。
是否可能存在计时问题?
答案 0 :(得分:2)
似乎缺少的一件事是在访问嵌入式工作表之前的激活调用:
gChartData.Activate
这也许可以解释崩溃的问题。 cf. https://msdn.microsoft.com/de-de/vba/powerpoint-vba/articles/chartdata-activate-method-powerpoint
欢呼 詹斯