2010-12-18 10 views

答えて

5
Dim shape As Excel.shape 

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

私はそれをテストしてみたことは、これはピボットグラフ(そしておそらくあなたは絵のように選択する何かを)削除することを –

+0

注意を動作します。 –

+0

デフォルトのグラフ名(「グラフ1」、「グラフ2」など)を使用していることを前提とした場合、inString関数を使用してループ内でテストできます。 InStr(0、shape.name、 "Chart")、その名前に "Chart"が含まれていない場合はスキップします。 –

8

最も簡単な方法:

Activesheet.Pictures.Delete 

または

Activesheet.Shapes.Delete 

あなたの写真があるオブジェクトの種類に応じて。

すべての画像を効率的に削除してから、繰り返して1枚ずつ削除(ループスルー)して削除します。すべての画像または他の形状を削除するには

+1

'Activesheet.Shapes.Delete'はエラーを発生させます(オブジェクトはこのメソッドをサポートしません) –

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 

私のシートはIタイプmsoAutoShapeの透明な図形のいっぱいだったので、このコードは便利でした思考は写真だった。したがって、Activesheet.Pictures.Deleteは機能しませんでした。

あなたは、このリンク上のすべての形状の種類を見つけることができます:http://msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx

関連する問題