使用Excel VBA删除图片

问题描述:

如何删除Excel 2007工作表中的所有图片?一个工作代码的例子会很棒。使用Excel VBA删除图片

Dim shape As Excel.shape 

For Each shape In ActiveSheet.Shapes 
     shape.Delete 
Next 
+1

我测试过它和它的作品 – 2010-12-18 21:42:17

+0

注意,这会删除数据透视图(也可能是其他任何你选择喜欢的图片)。 – 2010-12-20 13:43:33

+0

为了防止它,假设您使用默认图表名称(“图表1”,“图表2”,...),您可以使用inString函数在循环内进行测试。 InStr(0,shape.name,“Chart”),所以如果不包含名字中的“Chart”,请跳过它。 – 2010-12-20 18:00:11

最简单的方法:

Activesheet.Pictures.Delete 

Activesheet.Shapes.Delete 

根据对象的类型,您的图片是。

删除所有图片效率更高,然后迭代(循环)并逐个删除它们。

+1

'Activesheet.Shapes.Delete'发生错误(对象不支持此方法) – 2016-01-25 00:00:37

删除所有图片或其他形状,你可以遍历所有这些,检查类型:

Dim shape As Excel.shape 

For Each shape In ActiveSheet.Shapes 

    Select Case shape.Type 
     Case msoPicture, msoMedia, msoShapeTypeMixed, msoOLEControlObject, msoAutoShape 
      shape.Delete 
     Case Else 
      'Do nothing 
    End Select 
Next 

在我的情况下,这个代码是有用的,因为我的表是丰满型msoAutoShape的透明形状的我以为是图片。所以,Activesheet.Pictures.Delete不起作用。

你可以找到这个链接上的所有形状类型:http://msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx