Shapes.Type ....在Excel / PPT VBA中删除

时间:2013-09-09 14:09:55

标签: excel-vba powerpoint-vba vba excel

我正在尝试删除幻灯片上的现有形状(图片)并尝试以下操作,但这些都不起作用。作为一些背景知识,此代码在Excel中运行但与powerpoint交互,这只是代码的一小部分。其他一切都很好(已经定义了PPPres)。我也尝试索引形状(即使它是幻灯片中唯一的一个)并使用for循环,但似乎仍然无法使其工作。

 With PPPres.Slides(5).Shapes
    If Shapes.Type = msoPicture Then
       .Delete
    End If
 End With

*错误 - 未找到方法或数据成员(在.Delete上)。我知道“.Delete”仅适用于“with statement”,但我有,所以我不知道出了什么问题。随后说我然后尝试了以下内容:

 If PPPres.Slides(5).Shapes.Type = msoPicture Then
         Shapes.Delete
 End If

*错误 - 未找到方法或数据成员(在.Type上)。我知道“.Type”存在,所以我对这个问题感到困惑。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为最好在这种情况下使用For Each循环。如果有帮助,请参阅下文。

For Each shp In PPPres.Slides(5).Shapes
     If shp.Type = msoPicture Then
         shp.Delete
     End If
Next shp

答案 1 :(得分:1)

Shapes返回对幻灯片的整个形状集合的引用。 如果您确定只有一种形状,请使用

With PPPres.Slides(5).Shapes(1)
  If .Type = msoPicture Then
    .Delete
  End If
End With