PowerPoint VBA用于删除图表的宏

时间:2018-01-11 14:33:13

标签: vba charts powerpoint

我已经实现了一个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

事情是:宏做了应该做的事情,但一开始不尝试。我需要多次运行它,在三到四次之后,所有图表都被删除了。我第一次执行它,只删除了所有图表的一半,等等...... 缺少什么?

此致

2 个答案:

答案 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中删除元素会改变数组的结构。