none
パワーポイント VBAを使って テキストを自動更新出来ますか? RRS feed

  • 質問

  • 【OS】Windows7
    【Officeのバージョン】Office365
    【質問内容】
    PowerPointの最初のスライドのタイトルを、予め設定した時間になると自動的に変更することは出来なでしょうか?
    例えば、

    2019年7月26日 7時 変更対象のテキスト「AAAAA」
    2019年7月27日 8時 変更対象のテキスト「BBBBB」
    2019年7月28日 9時 変更対象のテキスト「CCCCC」

    のように、テキスト「AAAAA」「BBBBB」「CCCCC」が変わってくれるようなVBAの使い方があれば、教えて頂きたいのです。

    日程とテキストは既に決まっているので、時間前にPowerPointを起動して、入力し直して保存という作業を簡単に出来れば助かるのですが・・・。
    100回程あり、変更し忘れの防止になるので・・・。

    宜しくお願い致します。

    2019年7月26日 5:29

すべての返信

  • PowerPoint のスライド上の文字を VBA で書き換えることは可能です。Shape オブジェクトの TextFrame プロパティから TextRange を取得すれば、現在の文字列を取得したり、内容を変更したりできると思います。

    決まった時刻に、というのは現在時刻(Time() で取得)と設定時刻を比較すれば可能でしょう。

    そういう訳で、質問への回答としては、できるできないでいえば可能と思います。


    Hebikuzure aka Murachi Akira

    2019年7月27日 8:24
  • どのタイミングで書き換えたいのかがよくわかりませんがスライドショーを
    開始したときのみ (スライドショーを実行中にまたいだ時は処理されない) で
    よければクラスモジュールを使って以下のようにしてはどうでしょうか。

    ' PowerPoint の Application イベントを受け取るための変数
    Dim WithEvents ppApp As Application
    
    ' クラスのコンストラクタ
    ' (イベントを受け取れるようにする)
    Private Sub Class_Initialize()
        Set ppApp = Application
    End Sub
    
    ' スライドショーを開始したときのイベント処理
    Private Sub ppApp_SlideShowBegin(ByVal Wn As SlideShowWindow)
        Dim Title As String
    
        ' 現在時刻で処理分け
        Select Case Now
        ' 2019/7/26 7:00 - 2019/7/27 7:59:59 の間
        Case CDate("2019/7/26 7:00") To CDate("2019/7/27 7:59:59")
            Title = "AAAAA"
        ' 2019/7/27 8:00 - 2019/7/28 8:59:59 の間
        Case CDate("2019/7/27 8:00") To CDate("2019/7/28 8:59:59")
            Title = "BBBBB"
        ' 2019/7/28 9:00 以降
        Case Is >= CDate("2019/7/28 9:00")
            Title = "CCCCC"
        End Select
    
        ' Title が空文字列でなかったら変更する
        If Title <> "" Then
            Wn.Presentation.Slides(1).Shapes.Title.TextFrame.TextRange.Text = Title
        End If
    End Sub
    

    クラスモジュールの使い方などは別途調べてください。
    ただ、一応簡単に検証しましたが正常に動くかどうかの保証はあまりないです。

    2019年7月29日 6:49
  • ご返信ありがとうございます。

    「出来る」いうことが分かっだけでも、やってみる意欲に繋がります。

    まだどうやったら出来るのか、さっぱり分かりませんが・・・勉強します。

    2019年8月2日 13:27
  • 詳しくご返信頂き、ありがとうございます。
    もう少し勉強して、やってみます。
    分からない時はまた教えてください。
    2019年8月2日 13:28