「パワーポイント マクロ 画像 存在確認」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointで画像が存在しているかどうかを確認するマクロを探している方による検索です。
この検索ログだけでは、どう確認したかったのかの詳細はわかりませんが、VBA(Visual Basic for Applications)でマクロを作ってみました。
アクティブなプレゼンテーションファイルの、全スライトをチェックして、画像の含まれているスライドのスライド番号とタイトル文字列を、メッセージボックスに表示するマクロです。
Dim sld As Slide
Dim shp As Shape
Dim msg As String
msg = ""
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoPicture Then
msg = msg & sld.SlideNumber
With sld.Shapes
If .HasTitle Then
msg = msg & " 『" & _
.Title.TextFrame.TextRange.Text _
& "』"
End If
End With
msg = msg & vbCrLf
Exit For
End If
Next
Next
If msg = "" Then
msg = "画像の含まれているスライドは存在しません。"
Else
msg = "▼画像の含まれているスライド" & vbCrLf & msg
End If
MsgBox msg
End Sub上記のマクロを実行して、画像が含まれているスライドがある場合スライド番号とタイトル文字列がメッセージボックスに表示され、画像が含まれているスライドが存在していなければ、「画像の含まれているスライドは存在しません。」というメッセージが表示されます。
アクティブなプレゼンテーションファイルに対してループを回し、
For Each sld In ActivePresentation.Slides
各スライドのに含まれる全図形に対してループを回し、
For Each shp In sld.Shapes
その図形が画像であったなら、
If shp.Type = msoPicture Then
スライド番号を変数に格納し、
msg = msg & sld.SlideNumber
タイトル用プレースホルダが存在していた場合、
With sld.Shapes
If .HasTitle Then
タイトルの文字列も変数に格納しています。
msg = msg & " 『" & _
.Title.TextFrame.TextRange.Text _
& "』"
変数に改行コードを追加して、
msg = msg & vbCrLf
1個でも画像が存在していることが確認できれば、そのスライド内で図形の確認をし続けるのはムダですから、図形に対するループを抜けています。
Exit For
変数msgが空白文字列の場合、
If msg = "" Then
画像が含まれていなかったというメッセージを作成し
msg = "画像の含まれているスライドは存在しません。"
画像が含まれていたときは
Else
変数msgの先頭に文字列を追加しています。
msg = "▼画像の含まれているスライド" & vbCrLf & msg
メッセージボックスにタイトル文字列を表示する必要がなければ、タイトルの文字列を取得している以下の部分を削除してください。
With sld.Shapes
If .HasTitle Then
msg = msg & " 『" & _
.Title.TextFrame.TextRange.Text _
& "』"
End If
End With
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » 画像の含まれているスライドを調べるマクロ