Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ

アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

「スライド内のすべてのオートシェイプを削除するマクロ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointで、アクティブなスライドのすべてのオートシェイプを削除するマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

2003までのオートシェイプは2007からは図形

ちなみに、Office 2007からは、2003までのOfficeで[オートシェイプ]と呼ばれていた機能が[図形]と呼ばれるようになっています。

PowerPoint 2010では下図のように、

アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ

PowerPoint 2013では下図のように、

アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ

[挿入]タブ内に配置されているボタンにも[図形]と表示されています。

[スポンサードリンク]

アクティブスライドの全図形を削除するサンプルマクロ

以下のようなマクロで、アクティブスライド上にある、図形(オートシェイプ)をすべて削除することができます。

Sub アクティブスライドの図形をすべて削除する()
 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オブジェクト » アクティブスライドの全オートシェイプ・図形を削除するパワポマクロ

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


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

.