Home » パワーポイントマクロ・PowerPoint VBAの使い方 » グラフ・Chart » PowerPoint VBAでグラフを削除する

PowerPoint VBAでグラフを削除する

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

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

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

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

[スポンサードリンク]

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

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

Sub アクティブスライドのグラフを削除する()
 With ActiveWindow.Selection.SlideRange.Shapes
  Dim i As Long
  For i = .Count To 1 Step -1
   If .Item(i).HasChart Then
    .Item(i).Delete
   End If
  Next
 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
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
 For Each sld In ActivePresentation.Slides

  With sld.Shapes
   Dim i As Long
   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

最終更新日時:2021-06-08 14:30

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » グラフ・Chart » PowerPoint VBAでグラフを削除する

「グラフ・Chart」の記事一覧

検索


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

.