
PowerPoint VBAを使い、スライドショーでスライドをランダム表示するマクロをご紹介します。
マクロを実行すると自動でスライドショーが始まり、クリックするごとにスライドがランダム表示されます。
この記事の目次
スライドショーでスライドをランダム表示するマクロ
Sub RandomSlideShow()
Dim totalSlides As Long
Dim i As Long
Dim k As Long
Dim slideNumbers() As Long
Dim slideIDs() As Long
Dim dict As Object
Dim item As Variant
Dim j As Long
'重複を許さないコレクションオブジェクトを作成
Set dict = CreateObject("Scripting.Dictionary")
'「MySlide」という名前のスライドショーがあれば削除する
On Error Resume Next
ActivePresentation.slideShowSettings.namedSlideShows("MySlide").Delete
On Error GoTo 0
totalSlides = ActivePresentation.Slides.count
ReDim slideNumbers(1 To totalSlides), slideIDs(1 To totalSlides)
'最初のスライドをランダムに選択
dict.Add 1, Empty
For i = 2 To totalSlides
Do
slideNumbers(i) = Int(totalSlides * Rnd) + 1
Loop While dict.Exists(slideNumbers(i))
dict.Add slideNumbers(i), Empty
Next
'順序をシャッフル
i = 1
For Each item In dict.Keys
slideNumbers(i) = item
i = i + 1
Next
'ナビゲーション用のスライドIDを配列に格納
For i = 1 To totalSlides
slideIDs(i) = ActivePresentation.Slides(slideNumbers(i)).SlideID
Next
'名前付きスライドショーを作成して実行
With ActivePresentation.slideShowSettings
.RangeType = ppShowNamedSlideShow
.namedSlideShows.Add "MySlide", slideIDs
.SlideShowName = "MySlide"
.Run
End With
End Sub
上記のコードは、PowerPointのスライドをランダムにシャッフルして、その順序で名前付きスライドショーを作成して実行するものです。
具体的には、最初のスライドをランダムに選択し、重複しないように順序をシャッフルし、ナビゲーション用のスライドIDを配列に格納して、名前付きスライドショーを作成して実行します。
スライドの数が多くても正確に動作するように、コレクションオブジェクトを使用してます。
マクロの使い方は、次の記事で解説しています。

PowerPointマクロ入門 | コピペで始める楽々コース
PowerPointでマクロを始めたいけど、難しそうでよく分からないという方向けの入門編です。PPD…
実行結果

ランダム表示させたいファイルを用意してマクロを実行します。今回は、スライド1から8までをスライドショーでランダム表示させます。
実行結果は動画をご覧ください。






















