「パワーポイントマクロ 複数のshapeからchartのみ選択」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
複数のShapeからグラフだけを選択する、PowerPointマクロを探していた方による検索キーワードです。
「chart」という単語を使ってらっしゃるということは、Excel VBA(Visual Basic for Applications)の経験がある方でしょうか。
グラフだけを選択するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブなスライドで、グラフだけを選択できます。
With ActiveWindow.Selection
.Unselect
Dim shp As Shape
For Each shp In .SlideRange.Shapes
If shp.HasChart Then
shp.Select Replace:=msoFalse
End If
Next
End Sub
サンプルマクロの解説
PowerPoint VBAにChartObjectオブジェクトはない
PowerPointのグラフは、Excelの埋め込みグラフに近そうですから、Excel VBA経験のある方の場合、ChartObjectオブジェクトがあるだろうと考えてしまう方もいらっしゃるかもしれませんが、PowerPoint VBAにChartObjectオブジェクトはありません。
Shapeの中に、Chartオブジェクトが存在しています。
Shapeの中にグラフが存在するかどうかを、ShapeオブジェクトのHasChartプロパティで調べられます。
サンプルマクロで行っている処理
PowerPoint VBAには、Excel VBAのActiveSheetに該当する、ActiveSlide的なプロパティは存在しませんから、アクティブなスライドを取得するために、定番のActiveWindow.Selection.SlideRangeというオブジェクト式を利用しています。
アクティブなスライドを表すSlideRangeオブジェクトのShapesコレクションオブジェクトに対してFor Each~Nextループを回して、
With ActiveWindow.Selection
For Each shp In .SlideRange.Shapes
もしグラフの存在するShapeだったら、
If shp.HasChart Then
そのShapeを選択しています。
shp.Select Replace:=msoFalse
グラフの存在しないShapeが選択されている状態で、
With ActiveWindow.Selection
For Each shp In .SlideRange.Shapes
If shp.HasChart Then
shp.Select Replace:=msoFalse
というFor Each~Nextループを回すと、選択されていたグラフの存在しないShapeも含んで選択されてしまいますから、事前に、
.Unselect
で、選択の解除を行っています。
最終更新日時:2021-06-08 14:47
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » グラフ・Chart » PowerPoint VBAでグラフだけを選択する