PowerPointで、マクロを使って一括処理をしようとしたときに、スライドごとに含まれる画像の枚数を調べる必要が出てきました。
今日は、そのマクロをご紹介しておきます。
スライドごとに含まれる画像の枚数を調べるサンプルマクロ
以下のマクロを実行すると、スライドごとに含まれる画像の枚数が、イミディエイトウィンドウに出力されます。
Dim sld As Slide
Dim shp As Shape
Dim msg As String
Dim cnt As Long ''画像の枚数
For Each sld In ActivePresentation.Slides
cnt = 0
For Each shp In sld.Shapes
If shp.Type = msoPicture Then
If cnt = 0 Then msg = msg & "#" & sld.SlideNumber
cnt = cnt + 1
End If
Next shp
If cnt >= 1 Then msg = msg & vbTab & cnt & vbCrLf
Next sld
If msg = "" Then msg = "画像はありませんでした。"
Debug.Print msg
End Subこの手のPowerPointマクロの定番の処理で、全スライドにループを回して、個々のスライドで更に全Shapeに対してループを回すマクロです。
サンプルマクロの解説
アクティブなプレゼンテーションファイルの全スライドに対してループを回して、
For Each sld In ActivePresentation.Slides
スライドごとに画像の枚数をカウントする変数を初期化しておきます。
cnt = 0
スライド内の全Shapeに対してループを回して、
For Each shp In sld.Shapes
もしShapeが画像だったときに、
If shp.Type = msoPicture Then
もし変数・cntが「0」だった場合には、このスライドではじめて画像が見つかったということで、スライド番号を出力するように変数・msgを更新し
If cnt = 0 Then msg = msg & "#" & sld.SlideNumber
変数・cntをインクリメントします。
cnt = cnt + 1
スライド内の全シェイプに対するループを抜けたあとに、1枚でも画像が存在していたときには変数・msgを更新します。
Next shp
If cnt >= 1 Then msg = msg & vbTab & cnt & vbCrLf
もしも、変数・msgが空っぽのときには画像がなかったわけなので、その旨のメッセージを変数・msgに格納します。
If msg = "" Then msg = "画像はありませんでした。"
最後に変数・msgの内容をイミディエイトウィンドウに出力します。
Debug.Print msg
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 画像 » 画像の枚数を調べるPowerPointマクロ