「vba ppt プレースホルダ 削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
プレースホルダーを削除する、PowerPoint VBA(Visual Basic for Applications)のコードを探している方による検索です。
文字の入力されていないプレースホルダーを削除するサンプルマクロ
「vba ppt プレースホルダ 削除」
という検索キーワードだけでは、どのプレースホルダーを削除したいのかなどの詳細がわかりませんので、実務で使えそうなマクロをご紹介しておきます。
アクティブなプレゼンテーションファイルから、文字の入力されていないプレースホルダーをまとめて削除するマクロです。
Dim sld As Slide
Dim i As Long
Dim msg As String
msg = "アクティブなプレゼンテーションファイルから、文字の入力されていないプレースホルダーをすべて削除しますか?"
If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub
For Each sld In ActivePresentation.Slides
With sld.Shapes.Placeholders
For i = .Count To 1 Step -1
With .Item(i)
If .HasTextFrame Then
If .TextFrame.TextRange = "" Then
.Delete
End If
End If
End With
Next i
End With
Next sld
End Sub上記のマクロを実行すると、
「アクティブなプレゼンテーションファイルから、文字の入力されていないプレースホルダーをすべて削除しますか?」
というメッセージボックスが表示され、[はい]ボタンをクリックすると、文字の入力されていないプレースホルダーがまとめて削除されます。
サンプルマクロの解説
確認メッセージを表示して[いいえ]ボタンが押されたときには、マクロを終了します。
msg = "アクティブなプレゼンテーションファイルから、文字の入力されていないプレースホルダーをすべて削除しますか?"
If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub
[はい]ボタンが押されたときには、アクティブなプレゼンテーションファイルの全スライドにループ処理を開始し、
For Each sld In ActivePresentation.Slides
各スライド内の全プレースホルダに対して後ろからループを回しています。
With sld.Shapes.Placeholders
For i = .Count To 1 Step -1
このマクロに限らず、削除が行わるループを前から回すとコードが複雑になりますので、「Step -1」と後ろから前にループを回しています。
プレースホルダーにテキストフレームが存在しているときに、
With .Item(i)
If .HasTextFrame Then
文字が入力されていなければ、
If .TextFrame.TextRange = "" Then
そのプレースホルダーを削除しています。
.Delete
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » プレースホルダー » 文字の入力されていないプレースホルダーを削除するパワポマクロ