【PowerPoint】スライドショー中にテキストボックスを削除・非表示するマクロ(ファイル付)

スライドショー中にテキストボックスを削除・非表示するマクロ Win

テキストを削除というキーワードで検索していたのですが。
マクロを実行すると、スライドから消滅していってしまうんですよね。

スライドショー中の削除希望だから、終わったら戻したいわけ!!!

このためには、削除ではなく非表示がよさそうです。
マクロを使わない方法として、アニメーションで終了させる方法もあります。

・スライドショー中に、テキストボックスを非表示するマクロ

Sub HideShape()
    Dim idx As Integer
    idx = SlideShowWindows(1).View.CurrentShowPosition
    ActivePresentation.Slides(idx).Shapes("Title1").Visible = msoFalse
End Sub

テキストもShapeの一部です。

まず現在のスライド番号を取得。

そこにあるシェイプ名「Title1」の表示をなしにする。

非表示自体は「.Visible = msoFalse」だけですが、テキストを指定するのに長くなります。

・スライドショー中に、テキストボックスを削除するマクロ

Sub DeleteShape()
    Dim idx As Integer
    idx = SlideShowWindows(1).View.CurrentShowPosition
    ActivePresentation.Slides(idx).Shapes("Title1").Delete
End Sub

削除は「.Delete」にするだけです。
こちらは、もう戻ってきません。

※補足
スライドショー中にクリックしたShape(テキストや図形)を取得することは、VBAだけではできないはずです。
つまり、1番をクリックして1番が消えるマクロ、2番をクリックして2番が消えるマクロは別々に作らないといけないということ。
対象の数だけ作成するか、もしくはスライド上すべて削除するなどの指定になるかと思います。

・スライドショー終了時に元に戻す方法

スライドショーを終えてみると、非表示後は非表示のままなんですよね。

スライドショー終了時に実行できるマクロがありますので元の表示に戻します。

Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
    Dim shp As Shape
    Dim sld As Slide
    
    'スライド1を指定
    Set sld = ActivePresentation.Slides(1)

    'スライド1上のシェイプごとに表示をTrueにする
    For Each shp In sld.Shapes
        shp.Visible = msoTrue
    Next shp
End Sub

・検索用

スライドショー中に文字を消すマクロ
スライドショー中に図形を消すマクロ
スライドショー中に図形を見えなくするマクロ

お読みいただきありがとうございます。

コメント

タイトルとURLをコピーしました