「vba ワード 画像 削除」
「word vba 全ての 画像削除」
といった検索キーワードで、時折アクセスがあります。
浮動オブジェクトの画像をすべて削除するサンプル
以下のSubプロシージャを実行すると、アクティブ文書内の浮動オブジェクトとしての画像が、すべて削除されます。
Dim i As Long
With ActiveDocument.Shapes
For i = .Count To 1 Step -1
If .Item(i).Type = msoPicture Then
.Item(i).Delete
End If
Next
End With
End Sub
『Excel VBAユーザーのためのWord VBA入門(1)』の、「1-3. Excel VBAユーザーがWord VBAで注意すべき点」でも触れているとおり、For Each~Nextループの挙動が、Excel VBAとWord VBAで異なる場合があります。
Shapesに対するFor Each~Nextループが、その代表例です。Excel VBAの場合、For Each~NextループでShapeの削除処理が可能ですが、Word VBAではダメです。一部のShapeが残ってしまうケースがあります。
そのため上記のSubプロシージャでは、For~Nextループを「Step - 1」で回しています。
画像かどうかの判定は、Shape.Typeプロパティが、msoPictureであるかで行っています。
If .Item(i).Type = msoPicture Then
行内オブジェクトの画像をすべて削除するサンプル
以下のSubプロシージャを実行すると、アクティブ文書内の行内オブジェクトとしての画像が、すべて削除されます。
Dim i As Long
With ActiveDocument.InlineShapes
For i = .Count To 1 Step -1
If .Item(i).Type = wdInlineShapePicture Then
.Item(i).Delete
End If
Next
End With
End Sub
浮動オブジェクトの場合と考え方は同じですが、オブジェクトが違います。
InlineShapesコレクションに対して「Step - 1」でFor~Nextループを回して、
With ActiveDocument.InlineShapes For i = .Count To 1 Step -1
InlineShape.Typeプロパティの戻り値がwdInlineShapePictureのときに削除を行っています。
If .Item(i).Type = wdInlineShapePicture Then .Item(i).Delete
最終更新日時:2021-09-29 06:29
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Word VBAで全画像を削除する