Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

ActiveXは強い

誤解を招きかねないことを,理解しつつ,けっこう強烈にイメージに残ったので変なタイトルにしました。

今日,職場で同僚に相談された内容です。これはたしかに困る(;´▽`A``

ここからはちゃんと説明します。

パワーポイントで作ってスライドショー形式にしたものを,授業で使おうと準備をすることがよくあります。

想定外の編集が入ると,授業の本筋どころじゃないからです。対応に追われると,授業の本筋に費やす時間が無くなるので,

そういうとここそ勉強になると思う気持ちをどこかに放り投げ,できるだけ編集されない形での配布をします。

スライドショー中に 文字を入力させたりするのにActiveXのテキストボックス等は便利です。

ただ,タブレットパソコンの画面は狭いので,それらを覆い隠して違うメッセージを伝えようとすることがあります。

f:id:chemiphys:20170113204448p:plain

パーツは準備しました。さて,入力が行われたら,オートシェイプをかぶせるぞ。。

f:id:chemiphys:20170113204615p:plain
かぶせました。この画像意味がわからないけど,下にはActiveXのボタンとテキストボックスがあるんです。

よしよし,じゃ確認してみよう。スライドショーにすると・・・

f:id:chemiphys:20170113204709p:plain

f:id:chemiphys:20170113204756p:plain

こういう時,書きながら 厚切りジェイソンさんの言い回しが頭に浮かぶ・・。Why ##$'("#("%!

ナンダヨコレハ・・

ZOrder等をいじっても,効果はありません。ActiveXが前面に出てきて主張してくれます。

少し悩みました。。あきらかにかぶせてるのに,自己主張してくるこいつらをどうするか・・・


・・・

答えは簡単。ActiveXのVisibleプロパティをfalseにすればいいだけでした。(;´▽`A``

こういうことに出会うと,ActiveXのバグじゃないか!!とか文句言っている間に解決するわけで,

いろいろな力をちくちくつけていかないとなーと思わされる出来事でした。

ActiveXオブジェクトの指定の仕方は,以前他ので書きましたが,

そのコードくらい書かないとVBAの記事になっていないので載せておきます。

f:id:chemiphys:20170113205404p:plain

Slide1に TextBox1 と CommandButton1 がありますね

f:id:chemiphys:20170113205521p:plain

Slide1のクラスモジュール内に書くのか,標準モジュールに書くのかで若干状況が変わります。

わたしは標準モジュールで作業をするのが好きなのでその場合だと,

Sub test()

    Slide1.TextBox1.Visible = False
    Slide1.CommandButton1.Visible = False
    
End Sub

標準モジュールからだと,モジュール名から書いていく。インテリセンスが働いてくれて,TextBox1とかも簡単に書けてなんか気持ちいい。

Slide1のクラスモジュール内では,

Sub test()

TextBox1.Visible = True
Me.TextBox1.Visible = True

End Sub

いきなりオブジェクト名から書き始めても,visibleプロパティをインテリセンスが補助してくれるし,
meから書くと,オブジェクト名をうろ覚えでも書きやすい。どちらかといえば,Meから書く方が入力ミスはは減るかな。

同僚がくれたネタによる,備忘録でした。