「パワーポイント マクロ スライドショー時間設定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointでは、[画面切り替え]タブ-[タイミング]グループ-[自動的に切り替え]欄で、
指定した時間が経過したときに、自動的に次のスライドを表示する設定を行うことができます。
「パワーポイント マクロ スライドショー時間設定」
という検索は、このスライドショーの時間設定を行うPowerPointマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索でしょう。
全スライドの画面切替時間を設定するサンプルマクロ
以下のようなマクロで、アクティブなプレゼンテーションの、すべてのスライドの画面切り替え時間を設定できます。
Const SHOW_SEC = 5.5
Dim sld As Slide
For Each sld In ActivePresentation.Slides
With sld.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
End With
Next sld
上記のマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。
各スライドを自動的に切り替える時間は、SlideShowTransitionオブジェクトのAdvanceTimeプロパティで設定します。
.AdvanceTime = SHOW_SEC
リボンから操作する場合、切り替え時間を指定する操作を行うと、[自動的に切り替え]チェックボックスが連動してOnになりますが、VBAから時間を設定するときはSlideShowTransitionオブジェクトのAdvanceOnTimeプロパティも設定する必要があります。
.AdvanceOnTime = msoTrue
上記の2つのプロパティを、全スライドに設定するために、全スライドに対してFor Each~Nextループを回して処理しています。
For Each sld In ActivePresentation.Slides
With sld.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
ただし、上記のような一つのプレゼンテーションファイルで全スライドの画面切り替え時間を設定するには、[画面切り替え]タブ-[タイミング]グループ-[すべてに適用]ボタンを利用すればいいわけですから、
マクロを使う必要はあまりなさそうに感じます。
開いている全プレゼンテーションファイルで画面切替時間を設定するサンプルマクロ
実務で必要になりそうなのは、開いているすべてのプレゼンテーションファイルで、まとめて画面切り替えの時間設定を行うマクロでしょうか。
Const SHOW_SEC = 12.5
Dim prs As Presentation
Dim sld As Slide
For Each prs In Presentations
For Each sld In prs.Slides
With sld.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
End With
Next sld
Next prs
先のマクロと同じ処理を、全プレゼンテーションファイルに対するFor Each~Nextループの中で、行っています。
For Each prs In Presentations
For Each sld In prs.Slides
With sld.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
選択したスライドの画面切替時間を設定するサンプルマクロ
もう一つ実務でニーズがありそうなのが、選択されている複数のスライドの画面切り替え時間をまとめて設定するマクロでしょうか。
Const SHOW_SEC = 7.5
With ActiveWindow.Selection
If .Type <> ppSelectionSlides Then Exit Sub
With .SlideRange.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
End With
End With
End Sub上記のマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。
先にご紹介した、アクティブなプレゼンテーションの全スライドの画面切り替え時間を設定するマクロとは、SlideShowTransitionオブジェクトを取得するまでのオブジェクト階層が、まったく異なります。
また、SlideRangeオブジェクトはコレクションでもあり単一オブジェクトでもあるため、ループを回さなくても一発で設定できてしまうのもポイントでしょう。
With .SlideRange.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = SHOW_SEC
スライドが選択されてないときにエラーが発生しないように、選択されているのがスライドでなければプロシージャを抜ける処理を事前に行っています。
With ActiveWindow.Selection
If .Type <> ppSelectionSlides Then Exit Sub
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » スライドショーの画面切替時間を設定するPowerPointマクロ