「powerpoint2013 vba slideshowwindows アクティブ」
という検索でアクセスがあることに気付きました。
PowerPoint VBAで、スライドショーのウィンドウをアクティブにするには、どのようなコードを書けばいいのかを探していらしたのでしょう。
検索キーワード
「slideshowwindows(1).view 前」
も、もしかすると同じことを探していたのかもしれません。
スライドショーをアクティブにするサンプルマクロ
スライドショーが実行されているときに、以下の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プロシージャでしょうか。
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文を使うほうが、多少スッキリしたコードになります。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
- Newer:InputBox関数の初期値
- Older:ループの中にループ
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » VBAでスライドショーをアクティブに