Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » スライドショーの画面切替時間を設定するPowerPointマクロ

スライドショーの画面切替時間を設定するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

「パワーポイント マクロ スライドショー時間設定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPointでは、[画面切り替え]タブ-[タイミング]グループ-[自動的に切り替え]欄で、

スライドショーの画面切替時間を設定するPowerPointマクロ

指定した時間が経過したときに、自動的に次のスライドを表示する設定を行うことができます。

「パワーポイント マクロ スライドショー時間設定」
という検索は、このスライドショーの時間設定を行うPowerPointマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索でしょう。

[スポンサードリンク]

全スライドの画面切替時間を設定するサンプルマクロ

以下のようなマクロで、アクティブなプレゼンテーションの、すべてのスライドの画面切り替え時間を設定できます。

Sub 画面切替時間を設定する_全スライド()

 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

End Sub

上記のマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。

スライドショーの画面切替時間を設定するPowerPointマクロ

各スライドを自動的に切り替える時間は、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

ただし、上記のような一つのプレゼンテーションファイルで全スライドの画面切り替え時間を設定するには、[画面切り替え]タブ-[タイミング]グループ-[すべてに適用]ボタンを利用すればいいわけですから、

スライドショーの画面切替時間を設定するPowerPointマクロ

マクロを使う必要はあまりなさそうに感じます。

開いている全プレゼンテーションファイルで画面切替時間を設定するサンプルマクロ

実務で必要になりそうなのは、開いているすべてのプレゼンテーションファイルで、まとめて画面切り替えの時間設定を行うマクロでしょうか。

Sub 画面切替時間を設定する_全プレゼンテーション()

 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

End Sub

先のマクロと同じ処理を、全プレゼンテーションファイルに対するFor Each~Nextループの中で、行っています。
 For Each prs In Presentations
  For Each sld In prs.Slides
  With sld.SlideShowTransition
   .AdvanceOnTime = msoTrue
   .AdvanceTime = SHOW_SEC

選択したスライドの画面切替時間を設定するサンプルマクロ

もう一つ実務でニーズがありそうなのが、選択されている複数のスライドの画面切り替え時間をまとめて設定するマクロでしょうか。

Sub 画面切替時間を設定する_選択スライド()

 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

上記のマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。

スライドショーの画面切替時間を設定するPowerPointマクロ

先にご紹介した、アクティブなプレゼンテーションの全スライドの画面切り替え時間を設定するマクロとは、SlideShowTransitionオブジェクトを取得するまでのオブジェクト階層が、まったく異なります。

また、SlideRangeオブジェクトはコレクションでもあり単一オブジェクトでもあるため、ループを回さなくても一発で設定できてしまうのもポイントでしょう。
  With .SlideRange.SlideShowTransition
   .AdvanceOnTime = msoTrue
   .AdvanceTime = SHOW_SEC

スライドが選択されてないときにエラーが発生しないように、選択されているのがスライドでなければプロシージャを抜ける処理を事前に行っています。
 With ActiveWindow.Selection
  If .Type <> ppSelectionSlides Then Exit Sub

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » スライドショーの画面切替時間を設定するPowerPointマクロ

「スライドショー」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.