おすすめパワポ本12選!プロから学ぶ資料作成術

【パワポVBA】スライドショーでスライドをランダム表示するマクロ

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までをスライドショーでランダム表示させます。

実行結果は動画をご覧ください。