Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » VBAでスライドショーをアクティブに

VBAでスライドショーをアクティブに

対象:PowerPoint 2010, PowerPoint 2013, Windows版PowerPoint 2016

「powerpoint2013 vba slideshowwindows アクティブ」
という検索でアクセスがあることに気付きました。

PowerPoint VBAで、スライドショーのウィンドウをアクティブにするには、どのようなコードを書けばいいのかを探していらしたのでしょう。

[スポンサードリンク]

検索キーワード
「slideshowwindows(1).view 前」
も、もしかすると同じことを探していたのかもしれません。

スライドショーをアクティブにするサンプルマクロ

スライドショーが実行されているときに、以下のSubプロシージャを実行すると、スライドショーがアクティブになります。
Sub スライドショーをアクティブに()
 With SlideShowWindows
  If .Count >= 1 Then .Item(1).Activate
 End With
End Sub

SlideShowWindowオブジェクトのActivateメソッドを使えば、

名前のとおりスライドショーをアクティブにできます。

ただし、スライドショーが実行されていないときに、いきなり
  SlideShowWindows(1).Activate
を実行すると、
「SlideShowWindows(不明なメンバー)範囲外の整数1は次の有効な範囲にありません 1から0へ」
という実行時エラーが発生します。

それにしてもこのエラーメッセージは意味不明すぎです。

そのため、
  With SlideShowWindows
   If .Count >= 1 Then .Item(1).Activate
と、SlideShowWindowsコレクションオブジェクトのCountプロパティを確認するIf文を入れています。

指定したプレゼンテーションのスライドショーをアクティブにするサンプルマクロ

複数のスライドショーが実行されているときに、指定したスライドショーをアクティブにしたいのなら、以下のようなSubプロシージャでしょうか。

Sub 指定したプレゼンテーションのスライドショーをアクティブに()
 Const PRS_NAME = "test.pptx"
 Dim i As Long

 With SlideShowWindows
  For i = 1 To .Count
   If .Item(i).Presentation.Name = PRS_NAME Then
    .Item(i).Activate
    Exit Sub
   End If
  Next i
 End With
End Sub

上記のSubプロシージャを実行すると、test.pptxのスライドショーがアクティブになります

SlideShowWindowオブジェクトのPresentationプロパティを使うと、

Presentationオブジェクトを取得できますから、そのNameプロパティで、アクティブにしたいスライドショーかどうかを判定しています。
   If .Item(i).Presentation.Name = PRS_NAME Then
    .Item(i).Activate

For Each~Next文で指定したプレゼンテーションのスライドショーをアクティブにする

行っている処理は同じですが、For~Next文よりFor Each~Next文を使うほうが、多少スッキリしたコードになります。
Sub 指定したプレゼンテーションのスライドショーをアクティブに_For_Each()
 Const PRS_NAME = "test.pptx"
 Dim ss As SlideShowWindow
 
 For Each ss In SlideShowWindows
  If ss.Presentation.Name = PRS_NAME Then
   ss.Activate
   Exit Sub
  End If
 Next ss
End Sub
[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » VBAでスライドショーをアクティブに

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

検索


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

.