我已经实现了一个VBA宏来删除Power Point文档中的图表。 代码如下:
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
事情是:宏做了应该做的事情,但一开始不尝试。我需要多次运行它,在三到四次之后,所有图表都被删除了。我第一次执行它,只删除了所有图表的一半,等等...... 缺少什么?
此致
答案 0 :(得分:0)
我不确定HasChart
是否是您尝试实现目标的最佳选择。
如果您尝试使用Type
属性,那该怎么办?
If shp.Type = msoChart Then
shp.Delete
End If
答案 1 :(得分:0)
最后我明白了。以下代码一次尝试:
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
基本上:为Shapes以相反的顺序运行循环会产生差异。我想是因为在Shapes中删除元素会改变数组的结构。