Excel操作でシートの図形やオートシェイプを全て削除する方法
Excelの操作でも図形やオートシェイプの全削除は可能ですが、以下のように少し手間が掛かります。
- ホームタブ→編集グループ→検索と選択→条件を選択してジャンプ、で、「選択オプション」ダイアログを開く。
- ダイアログで「オブジェクト」ラジオボタンを選択してOKボタンを押す。
- 全てのオートシェイプが選択されているのでDeleteキーを押す。
VBAでシートのオートシェイプを全て削除する方法
VBAでは1行で全てのオートシェイプの削除が可能です。
1 |
ActiveSheet.DrawingObjects.Delete |
同じことをShapeオブジェクトを使って書くことが出来ます。
1 2 |
ActiveSheet.Shapes.SelectAll Selection.Delete |
コード説明
1つ目のコード
どちらのコードも単純ですが、1つ目のコードは分かりやすいですね。
シートの図やオートシェイプやOLEオブジェクトなどは全てDrawingObjectsコレクションに含まれています。Deleteメソッドでクリアされます。
2つ目のコード
2つ目のコードが2行になっているのは、ShapesコレクションにDeleteメソッドがないためSelectAllでDrawingObjectsコレクションを選択し、そこでDeleteしているのが理由です。
MicrosoftのヘルプではSelectAllはShapeRangeオブジェクトを作成するとありますが、実際にはDrawingObjectsコレクションになります。
Shapes.SelectAllプロパティは対象となるオートシェイプが一つだけの場合はそのオートシェイプの種類を返しますが、複数の場合はDrawingObjectsコレクションを返します。
どちらのコードでもよいです
上の2つのコードはどちらの書き方も結局はDrawingObjectsオブジェクトを使っていますので、やっていることは全く同じです。
なのでどちらで書いても構いません。
どちらか選ぶとしたら1行で書ける1つ目の方がすっきりはすると思います。