PowerpointのActiveXのテキストボックスについて
パワーポイントのVBAに自信がついてきたころに,同僚から質問されて,困惑したことがあったのを思い出しました。
ActiveXのテキストボックスの扱いです。
困惑しましたし,デザインの幅が狭いですし,こんなの・・と思わなくもないですが,とても面白い挙動もあります。
触れておこうと思います。
私がいつも使うテキストボックスは,挿入メニューからいれれるやつです。
図形の中のもですし,リボンの中にもテキストボックスがいますね。または,単に図形を描いた後でもテキストは扱ってくれます。
自由度は高いし,デザインもいろいろ凝れます。とても使い勝手がいい。
こちらは
ActivePresentation.Slides(●).Shapes("▲▲▲").TextFrame.TextRange.Text
で扱える方です。
それとは別のテキストボックスがあります。ActiveXのやつのほう。開発タブのコントロールのところにいます。
似てますが,全く異なるものです。ただ,すごい面白いところもあります。
まず,ActiveXコントロールをスライドに挿入すると,プロジェクトエクスプローラーにそのスライドが出現します。
Activexコントロールの指定方法はいつものテキストボックスとは全然違って,Slide1がクラスモジュール扱いみたいで,
Slide1モジュールの中では,
Private Sub AX_txt_Change() Me.Shapes("txt").TextFrame.TextRange.Text = AX_txt.Text End Sub
こんなふうに書ける。 txt が通常のテキストボックス, AX_txtがActiveXのテキストボックスにつけた名前です。
Meというのはスライド1のことです。ここ限定ではありますが,簡略化して書けますね。あと,ActiveXのテキストボックスは名指しで簡単に書けてるところも全然違う。
標準モジュールからAX_txtにアクセスするには,『Slide1.AX_txt』みたいな感じでいけるようになってます。
メンバなども表示されてくるので,使いやすい面はあります。扱い方が違うと認識していれば,むしろ便利なものですね。
ActiveXのテキストボックスにはイベントが発生しています。前準備無しで,テキストボックスに関するイベントはもう有効になってるので,
さっきのコードを書くと,スライドショー中こんな感じ。
テキストボックスのChangeイベントを使ってスライドショー中に文字の入力を利用できます。Inputboxじゃなくて済む。
どんどん反映されていきますし,ボタンの文字を変更して,その文字を利用したマクロを実行するよう作ることもできます。
わたしは,タイマーマクロで,時間の自由入力ボタンにこのことを利用しています。
あと,Slide1のモジュールはクラスモジュールみたいであることを利用して,全体のイベント発生をそこに書けるようです。
Public WithEvents App As Application Public Sub スタート() Set App = PowerPoint.Application End Sub
以前書いたエントリより,少し手間がはぶけてます。上記『スタート』を実行しないとイベント認識始まりませんけどね(゚▽゚*)
このことは,こちらの記事に書いてあります。
初心者備忘録さん [PowerPoint]Applicationオブジェクトのイベントを利用する
www.ka-net.org
こちらのブログもいつも勉強させてもらっているところです。
テキストボックスにはいくつかあって,アクセス方法が全然違うんだというのは気づいたら簡単ですが,最初は動揺しましたので,そのメモでした。