Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shape・図形 » グラフをすべて削除するPowerPointマクロ

グラフをすべて削除するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013, Windows版PowerPoint2016

「powerpoint vba グラフ削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPoint VBA(Visual Basic for Applications)でグラフを削除するには、どのようなコードを書けばいいのかを探している方による検索でしょうか。

いつものように簡単なマクロをいくつか作ってみました。

[スポンサードリンク]

アクティブスライドのグラフをすべて削除するサンプルマクロ

以下のようなマクロで、アクティブなスライド上のすべてのグラフを削除できます。


Sub アクティブスライドのグラフを削除する()

 Dim i As Long

 With ActiveWindow.Selection.SlideRange.Shapes
  For i = .Count To 1 Step -1
   If .Item(i).HasChart Then
    .Item(i).Delete
   End If
  Next i
 End With

End Sub

For~Nextループを「Step -1」で回して、
 With ActiveWindow.Selection.SlideRange.Shapes
  For i = .Count To 1 Step -1
各ShapeオブジェクトのHasChartプロパティを調べ、グラフを持ったShapeだったときに、
   If .Item(i).HasChart Then
Shape.Deleteメソッドで削除を行っています。
    .Item(i).Delete

PowerPoint VBAの場合For Each~Nextループで削除を行うと失敗することがある

Excelマクロ等の経験があって、PowerPointマクロの経験があまりない方だと、以下のようなFor Each~Nextループを使ったマクロを思いつくかもしれません。


Sub アクティブスライドのグラフを削除する_上手く動かない例()

 Dim shp As Shape

 For Each shp In ActiveWindow.Selection.SlideRange.Shapes
  If shp.HasChart Then
   shp.Delete
  End If
 Next shp

End Sub

スライドにグラフが一つしかなければ、このFor Each~Nextループを使ったマクロでもグラフを削除できますが、複数のグラフが存在しているスライドではグラフがいくつか残ってしまいます。

For Each~Nextループの回り方が、Excel VBAとPowerPoint VBAでは異なるためです。

そのため、先にご紹介したマクロでは、
 With ActiveWindow.Selection.SlideRange.Shapes
  For i = .Count To 1 Step -1
と、For~Nextループを「Step -1」で回しています。

アクティブプレゼンテーションのグラフをすべて削除するサンプルマクロ

アクティブプレゼンテーション上のすべてのグラフを削除するのなら以下のようなマクロです。


Sub アクティブプレゼンテーションでグラフを削除する()

 Dim sld As Slide
 Dim i As Long

 For Each sld In ActivePresentation.Slides
 With sld.Shapes
  For i = .Count To 1 Step -1
   If .Item(i).HasChart Then
    .Item(i).Delete
   End If
  Next i
 End With
 Next sld

End Sub

アクティブプレゼンテーション上の全スライドに対するFor Each~Nextループの中で、
 For Each sld In ActivePresentation.Slides
各スライド上の、全Shapeに対するFor~Nextループを「Step -1」で回して、
 With sld.Shapes
  For i = .Count To 1 Step -1
グラフを持っているShapeだった場合に削除を行っています。
   If .Item(i).HasChart Then
    .Item(i).Delete

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shape・図形 » グラフをすべて削除するPowerPointマクロ

TrackBack:0

TrackBack URL

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shape・図形 » グラフをすべて削除するPowerPointマクロ

「Shape・図形」の記事一覧

検索


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

.