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までをスライドショーでランダム表示させます。
実行結果は動画をご覧ください。