我已经实现了一个用于删除Power Point文档中图表的VBA宏。代码如下:
Sub cleanCharts()
Dim shp As Shape
Dim sld As Slide
'Loop Through Each Slide in ActivePresentation
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
shp.Delete
End If
Next shp
Next sld
End Sub问题是:宏做了应该做的事情,但不是第一次尝试。我需要运行几次,三四次之后,所有的图表都被删除了。我第一次执行它时,只有一半的图表被删除,等等。遗漏了什么?
问候
发布于 2018-01-12 00:54:29
我终于明白了。下面的代码可以一次完成:
Sub limpiaGraficas()
Dim sld As Slide
Dim i, num
'Loop Through Each Slide in ActivePresentation
For Each sld In ActivePresentation.Slides
num = sld.Shapes.Count
For i = num To 1 Step -1
If sld.Shapes(i).HasChart Then
sld.Shapes(i).Delete
End If
Next i
Next sld
End Sub基本上:对形状以相反的顺序运行循环会产生差异。我想这是因为删除形状中的元素会改变数组的结构。
发布于 2018-01-11 22:57:27
我不确定HasChart是否是您所要实现的目标的最佳选择。
如果你尝试使用Type属性呢?
If shp.Type = msoChart Then
shp.Delete
End Ifhttps://stackoverflow.com/questions/48209481
复制相似问题