ExcelのAuto_OpenやWordのAutoOpenのように、PowerPointにもコードを記述するだけで、あるタイミングで自動的に実行されるマクロが用意されています。
・OnSlideShowPageChange
・OnSlideShowTerminate
・OnSlideShowNextBuild
・OnSlideShowPreviousBuild
・標準モジュール
Option Explicit Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 'スライドショーでページが変わったときに実行されます。 Debug.Print "1.OnSlideShowPageChange" End Sub Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow) 'スライドショーが終了したときに実行されます。 Debug.Print "2.OnSlideShowTerminate" End Sub Public Sub OnSlideShowNextBuild(ByVal Wn As SlideShowWindow) 'スライド上のアニメーションの動作が進んだときに実行されます。 Debug.Print "3.OnSlideShowNextBuild" End Sub Public Sub OnSlideShowPreviousBuild(ByVal Wn As SlideShowWindow) 'スライド上のアニメーションの動作が戻ったときに実行されます。 Debug.Print "4.OnSlideShowPreviousBuild" End Sub
それぞれのマクロについてはコメントで説明を付けた通りですが、「OnSlideShowNextBuild」と「OnSlideShowPreviousBuild」については、動作の説明が難しく直観的に理解し難いマクロだと思いますので、どういったタイミングで実行されるのかは、実際にアニメーションを設定したスライドショーを実行して確認していただければと思います。
上記マクロは「[PowerPoint]Applicationオブジェクトのイベントを利用する」で紹介しているような方法でイベントをハンドリングする必要がありませんので、下記のようなスライドショー開始時にマクロを実行したい場合には手軽に利用できて便利だと思います。
Option Explicit Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 'スライドショー開始時にポインタを「表示」にするマクロ If Wn.View.CurrentShowPosition = Wn.Presentation.SlideShowSettings.StartingSlide Then _ Wn.View.PointerType = ppSlideShowPointerArrow End Sub
また、スライドショーの実行時やページ変更時にマクロを実行したいときに便利な「OnSlideShowPageChange」マクロですが、ppsやppsmといったマクロが有効なスライドショー形式のファイルを実行した場合には処理が実行されません。
こういったときはスライド上に適当なActiveXコントロール(コマンド ボタン等)を追加することでマクロが実行されるようになります。
■ 参考Webページ:
・Events supported by PowerPoint
http://officeone.mvps.org/vba/events_version.html
・OnSlideShowPageChange event does not fire
http://www.pptfaq.com/FAQ01152_OnSlideShowPageChange_event_does_not_fire.htm
この記事へのコメントはありません。