Home » パワーポイントマクロ・PowerPoint VBAの使い方 » プレースホルダー » 文字の入力されていないプレースホルダーを削除するパワポマクロ

文字の入力されていないプレースホルダーを削除するパワポマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

「vba ppt プレースホルダ 削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

プレースホルダーを削除する、PowerPoint VBA(Visual Basic for Applications)のコードを探している方による検索です。

ちなみに、「プレースホルダ」ではなく「プレースホルダー」と長音符号「ー」をつけるのが最近のルールです。

[スポンサードリンク]

文字の入力されていないプレースホルダーを削除するサンプルマクロ

「vba ppt プレースホルダ 削除」
という検索キーワードだけでは、どのプレースホルダーを削除したいのかなどの詳細がわかりませんので、実務で使えそうなマクロをご紹介しておきます。

アクティブなプレゼンテーションファイルから、文字の入力されていないプレースホルダーをまとめて削除するマクロです。

Sub 文字の入力されていないプレースホルダーを削除する()

 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の使い方 » プレースホルダー » 文字の入力されていないプレースホルダーを削除するパワポマクロ

「プレースホルダー」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.