Powerpoint VBAを使おう!

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

クラスモジュールをどうスタートさせようか。

ExcelVBAでシステムを設計するとき,イベントがとても使い勝手が良かった。

ブックを開いたとき,シートが切り替わるとき,ブックを閉じるとき。

同じようなものを期待すると,パワーポイントではその機能は用意はされているけど最初からは使えない。

このことはいろんなブログ等で紹介されています。

じゃあスタートボタンを用意すればいい,とスタートボタンを準備するんですが,

残念なことに,スタートボタン作った自分がいつも忘れます。(;´▽`A``

自分が忘れるなら,自分以外の人が使うなら必ず忘れるという想定をすべき。

じゃあどうしようか・・・。

わたしが今落ち着いているのは,いわゆるスプラッシュ画面。タイトル画面というほうが伝わるんでしょうか,正式名称については,素人なのでもちろん知りませんが,これを用意して,絶対にクリックさせようとしています。

スライド1はタイトル画面にして,いろいろ作りこんだ後,一番上に透明で全体を覆う長方形をのせる。
クリックもれを避けるために全体を覆うことが大事。

一番上にのっけた透明な長方形に クラスモジュールを読み込ませるマクロの実行をさせれば,比較的うまくイベントを使うことができています。
(グループ化した図形全体にはクリック時のマクロを設定できません。構成図形全部にマクロ実行を書き込むより上に透明な長方形のっけたほうがはやいと思っています。)

細かいところは,私は受け売りなのであれですが,わからなかった立場として引っかかることを追加しながら大枠を自分のためにメモ。

①クラスモジュールを挿入します。Class1と名前がなっていますが,このモジュール名が重要です。ここではAppEventとしておきます。
 プロパティウィンドウで(オブジェクト名)のところをクリックすると書き換えられます。
f:id:chemiphys:20170101221508p:plain
②クラスモジュールの中に次のコードを書き入れます。

Public WithEvents App As Application

ここで Appと書いているところが アプリケーションとして宣言しているオブジェクト変数です。後で使うので大事。
とりあえずクラスモジュール側で行う下準備はここまで。あとでまた戻ってきます。

③標準モジュールを挿入します。Module1とかなりますが,こちらはとりあえず今回はあまり気にしません。
標準モジュール側で次のコードを書きます。
1行目でcls をさっき作ったクラスを入れる変数として宣言しています。名前大事です。
『スタート』は好きなマクロ名でいいと思います。
さきほど「クラスモジュールを読み込ませるマクロ」と表現したものが,この『スタート』のことです。

Private cls As AppEvent

Sub スタート()

Set cls = New AppEvent
Set cls.App = Application

End Sub

こう書くときにクラスモジュール側の準備がうまくいっていれば,
f:id:chemiphys:20170101222950p:plain
コードを書いているときにメンバとして出てくるので,確認ができます。メンバとして出てこなければどこかで間違えてます(;´▽`A``

④ここまでやった段階で,自動的にクラスモジュールのほうに準備ができるているので,クラスモジュールに戻ります。
 クラスモジュールの上部のオブジェクト部分をクリックするとAppというのが増えているので,Appを選択すると,プロシージャ側でイベントが選べるようになっています。

f:id:chemiphys:20170101223744p:plain
 ちなみにClassのほうにも Initialize と Terminate の二つが増えてます。重要なことです・・・よね わたしはまだまだ使いこなせていないところです。


準備やポイントはここまでですが,イベントにコード書き込んでも標準モジュールの 『スタート』を一度動かしておかないとイベントは発生しません。
忘れずに実行または絶対に逃がさず実行させるように!
パワーポイントのイベントを頑張られる方は,お互いがんばりましょう(;´▽`A``

SlideShowNextSlideイベントに何か書き込んだものは,スライドが切り替わるたびに実行されるので,便利に思います。
SlideShowEnd,PresentationBeforeCloseとかも後処理として使いやすいかなぁ。