「スライド内のすべてのオートシェイプを削除するマクロ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointで、アクティブなスライドのすべてのオートシェイプを削除するマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
2003までのオートシェイプは2007からは図形
ちなみに、Office 2007からは、2003までのOfficeで[オートシェイプ]と呼ばれていた機能が[図形]と呼ばれるようになっています。
PowerPoint 2010では下図のように、
PowerPoint 2013では下図のように、
[挿入]タブ内に配置されているボタンにも[図形]と表示されています。
アクティブスライドの全図形を削除するサンプルマクロ
以下のようなマクロで、アクティブスライド上にある、図形(オートシェイプ)をすべて削除することができます。
Dim i As Long With ActiveWindow.Selection.SlideRange
For i = .Shapes.Count To 1 Step -1
With .Shapes(i)
If _
.Type = msoAutoShape Or _
.Type = msoLine Or _
.Type = msoGroup Then
.Delete
End If
End With '.Shapes(i)
Next i
End With 'ActiveWindow.Selection.SlideRange
End Sub
ループ処理の中に、条件分岐が一つだけあって、その条件分岐の中で削除を行っています。
サンプルマクロの解説
アクティブなスライドで、
With ActiveWindow.Selection.SlideRange
すべてのShapeオブジェクトに対して、後から前にループを回します。
For i = .Shapes.Count To 1 Step -1
前からループを回すと削除に失敗するので、後からループを回すのは、この件に限らず定番の処理方法です。
もしもShapeオブジェクトのTypeプロパティが、msoAutoShapeまたはmsoLineまたはmsoGroupだったときに、
With .Shapes(i)
If _
.Type = msoAutoShape Or _
.Type = msoLine Or _
.Type = msoGroup Then
そのShapeオブジェクトを削除しています。
.Delete
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ