Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Shapeをすべて削除するWordマクロ

Shapeをすべて削除するWordマクロ

対象:Word2007, Word2010, Word2013, Windows版Word2016

「word vba shape 削除」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスが、時折あります。

Word VBAではFor Each~Nextループで図形を削除できない

Excel VBAの場合は、
 Sub samp()
  Dim shp As Shape
  For Each shp in ActiveSheet.Shapes
   shp.Delete
  Next shp
 End Sub
といったマクロで、アクティブなシート上の図形を削除できます。

[スポンサードリンク]

同じ考え方で、以下のようなSubプロシージャでアクティブ文書の図形をすべて削除できると考え試したものの、図形が削除できなかったのかもしれません。
 Sub samp()
  Dim shp As Shape
  For Each shp in ActiveDocument.Shapes
   shp.Delete
  Next shp
 End Sub

Excel VBAと、Word VBAやPowerPoint VBAでは、For Each~Nextループの動きが異なることがあり、コレクションに含まれる単一オブジェクトの数が変化するようなFor Each~Nextループは、期待したとおりの結果にならないケースがあります。

Shapeの削除も、その一つです。
Word VBAではFor Each~NextループでShapeオブジェクトを削除しようとしても、上手くいきません。

Word VBAでは、すべてのオブジェクトがFor Each~Nextループで削除できないというわけでもなく、例えば表の削除はFor Each~NextループでOKです。

アクティブ文書のShapeをすべて削除するサンプルマクロ

以下のようなFor~Nextループを使ったマクロにすれば、アクティブ文書の図形をすべて削除できます。


Sub アクティブ文書の図形をすべて削除する()
 Dim i As Long

 With ActiveDocument.Shapes
  For i = .Count To 1 Step -1
  .Item(i).Delete
  Next i
 End With
End Sub

一般に、For Each~Nextループは、For~Nextループでも書くことができます。

For~Nextループを「Step -1」で回してやれば、Word VBAでShapeオブジェクトを削除できます。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Shapeをすべて削除するWordマクロ

TrackBack:0

TrackBack URL

Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Shapeをすべて削除するWordマクロ

「Shape・図形」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.