2010-12-18 206 views

回答

5
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

8

最簡單的方法:

Activesheet.Pictures.Delete 

Activesheet.Shapes.Delete 

根據對象的類型,您的圖片是。

刪除所有圖片效率更高,然後迭代(循環)並逐個刪除它們。

+1

'Activesheet.Shapes.Delete'發生錯誤(對象不支持此方法) – 2016-01-25 00:00:37

1

刪除所有圖片或其他形狀,你可以遍歷所有這些,檢查類型:

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