「powerpoint vba グラフ削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPoint VBA(Visual Basic for Applications)でグラフを削除するには、どのようなコードを書けばいいのかを探している方による検索でしょうか。
いつものように簡単なマクロをいくつか作ってみました。
アクティブスライドのグラフをすべて削除するサンプルマクロ
以下のようなマクロで、アクティブなスライド上のすべてのグラフを削除できます。
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ループを使ったマクロを思いつくかもしれません。
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」で回しています。
アクティブプレゼンテーションのグラフをすべて削除するサンプルマクロ
アクティブプレゼンテーション上のすべてのグラフを削除するのなら以下のようなマクロです。
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
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
- Newer:スタイル名表示領域の設定はどこに?
- Older:2次元配列をFor~Nextループで
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » グラフ・Chart » PowerPoint VBAでグラフを削除する