広告 資料作成

【サンプルコード付き】PowerPointでルーレット作成!スライドショーをランダムに切り替える方法

1. はじめに

PowerPointを使ったプレゼンやイベントで、スライドをランダムに切り替えると盛り上がります。

例えば、ゲーム大会でランダムに問題を選ぶ、授業で生徒の発表順を決める、ワークショップで議論のテーマを決めるなど、さまざまなシーンで活用できます。

本記事では、VBAを使ってスライドをランダムに切り替え、ルーレット風の演出をする方法を紹介します。

初心者の方でも簡単に試せるように、具体的なVBAコードとその設定方法を解説します。スクリーンショット付きの手順も用意したので、ぜひ活用してください。

以下にプレゼン資料に必要な5つのスキルに対応する書籍を紹介しています。難易度もわかるようにしていますので、参考にしてみてください。

【初心者からプロまで!】パワーポイントの作り方おすすめ本20選

この記事では、PowerPoint /パワーポイント(パワポ)によるプレゼン資料を作るためのスキル向上に有用な書籍を20冊紹介します。5つのスキルに沿った書籍で学習することで、総合的な資料作成スキルを向上させることができます。

続きを見る

2. PowerPoint スライドをランダムに切り替えるメリット

2-1. ランダム演出で盛り上げる

Power Pointを使って、クイズや抽選イベントを盛り上げることができます。利用シーンとしては以下のようなものがあります。
ルーレット風に表示することで、よりエンタメ性の高い演出が可能になります。

  • クイズ大会でランダムに問題を選択
  • 抽選イベントで当選者を決定
  • 授業やワークショップでインタラクティブな要素を追加
  • プレゼンテーションで視聴者の関心を引く
  • 研修や社内ミーティングで意見をランダムにピックアップ

2-2. VBAにより、手作業不要で自動化

手動でスライドをランダムに選ぶと時間がかかりますが、VBAを使えばワンクリックで自動化できます。

2-3. マクロボタンで簡単操作

スライド1にマクロ実行用のボタンを配置すれば、誰でもワンクリックで開始できるため、操作が簡単です。

3. ルーレット風スライド切り替えの仕組み

本記事で紹介するVBAの動作は以下のようになります。

  1. スライド1にボタンを設置(クリックでマクロを実行)
  2. スライド2~最後のスライドをランダムに表示(高速に切り替え)
  3. 何回か切り替えた後、徐々にスピードを落としながら停止
  4. 最終的なスライドで止まり、クリックでスライド1に戻る

以下のステートマシンは、スライド切り替えの流れを示しています。この仕組みを理解することで、コードの流れがより明確になります。

4. 【初心者向けVBAサンプル】スライドをランダムに切り替えるコード

4-1. VBAの準備(初心者向け)

  1. 開発タブを有効にする
    • PowerPointの「ファイル」→「オプション」→「リボンのユーザー設定」→「開発」にチェックを入れる
  2. VBAエディターを開く
    • 「Alt + F11」キーを押してVBAエディターを開く
  3. 標準モジュールを追加し、コードを貼り付ける
    • 「挿入」→「標準モジュール」を選択

4-2. コード作成

Option Explicit
Dim slideArray() As Integer ' スライド番号を格納
Dim finalSlide As Integer ' 最終的に表示するスライド
Dim stopFlag As Boolean ' 停止フラグ' ボタンを押したときにランダムスライドを開始

Sub RandomSlide()
    Dim i As Integer, j As Integer, temp As Integer
    Dim numSlides As Integer
    Dim slideIndex As Integer
    Dim delayTime As Double
    Dim slowDownFactor As Double

    numSlides = ActivePresentation.Slides.Count
    If numSlides < 2 Then Exit Sub ' スライドが1枚以下なら終了
    ' スライド2?最後までのリストを作成
    ReDim slideArray(2 To numSlides)
    For i = 2 To numSlides
        slideArray(i) = i
    Next i
    ' スライドをランダムにシャッフル
    Randomize
    For i = 2 To numSlides
        j = Int((numSlides - 1) * Rnd + 2) ' 2 から numSlides の範囲で乱数          
        temp = slideArray(i)
        slideArray(i) = slideArray(j)
        slideArray(j) = temp
    Next i
    ' ルーレット風のスライド切り替え
    stopFlag = False
    delayTime = 0.1 ' 初期切り替え速度(秒)
    slowDownFactor = 1.2 ' 減速倍率
    For i = 1 To 10  ' ルーレットの回数
        slideIndex = slideArray((i Mod (numSlides - 1)) + 2) ' ランダムなスライド選択
        ActivePresentation.SlideShowWindow.View.GotoSlide slideIndex
        Wait delayTime
        delayTime = delayTime * slowDownFactor ' 徐々に減速
    Next i
   ' 最後のスライドを確定
    finalSlide = slideArray(Int((numSlides - 1) * Rnd + 2))
    ActivePresentation.SlideShowWindow.View.GotoSlide finalSlide
    stopFlag = True
End Sub

' スライドショーでクリックやキー入力があればスライド1に戻る
Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
    If stopFlag Then        ' クリックやキー入力があったらスライド1に戻る
        Wn.View.GotoSlide 1
        stopFlag = False
    End If
End Sub

' 指定時間待機する(VBAはSleepがないためタイマーを使用)
Sub Wait(ByVal seconds As Double)
    Dim startTime As Double
    startTime = Timer
    Do While Timer < startTime + seconds
        DoEvents ' 処理を継続
    Loop
End Sub

4-3. マクロ実行ボタンの設定

スライドルーレットを動かすためのボタンを作成します。

  1. 1スライド目に、以下のようなボタンとなる四角形を挿入します。

2. 挿入した四角形を選択した状態で、「挿入」タブ→「動作」を選択します。

3. 動作設定で、マクロの実行を選択し、作成したマクロ関数を選択します。(上記コードの場合、RandomSlide)
  選択したら、OKボタンをクリックします。

4-4. スライドショーの実行

2スライド以降にルーレット表示するスライドを追加します。何枚でもOKです。

スライドを追加したら、スライドショーを実行します。この状態で1スライド目のボタンを押せば、ルーレット表示が開始されます。

たとえば、2~4スライド目にグー、チョキ、パーのスライドを作成すれば以下のようなじゃんけんルーレットができます。

この手順に従えば、初心者でも10〜15分程度でスムーズにVBAを設定できます。

所長
所長

5. コードの詳細解説

5-1. 変数の定義

最初に、スライドの管理に必要な変数を宣言します。

Option Explicit
Dim slideArray() As Integer ' スライド番号を格納
Dim finalSlide As Integer ' 最終的に表示するスライド
Dim stopFlag As Boolean ' 停止フラグ

• slideArray() : スライドの番号を格納する配列
• finalSlide : 最終的に選ばれるスライドの番号
• stopFlag : ルーレット終了後、クリック時にスライド1へ戻る処理の制御用フラグ

5-2. ランダムなスライド切り替えを開始する

このサブ関数が、スライドをランダムに切り替える処理のメイン部分です。

Sub RandomSlide()
1. スライド番号の取得

スライドの枚数を取得し、2枚以上ある場合のみ処理を続けます。

numSlides = ActivePresentation.Slides.Count
If numSlides < 2 Then Exit Sub ' スライドが1枚以下なら終了
2. スライド番号の配列を作成

2枚目以降のスライド番号をslideArrayに格納します。スライド1は常に開始スライドなので除外します。

ReDim slideArray(2 To numSlides)
For i = 2 To numSlides
    slideArray(i) = i
Next i
3. 配列をランダムにシャッフル

slideArray の要素をランダムに並べ替え(シャッフル処理)します。Randomize で乱数を初期化しています。

Randomize
For i = 2 To numSlides
    j = Int((numSlides - 1) * Rnd + 2) ' 2 から numSlides の範囲で乱数
    temp = slideArray(i)
    slideArray(i) = slideArray(j)
    slideArray(j) = temp
Next i
4. ルーレット風のスライド切り替え

For文処理でランダムでスライドを表示します。 stopFlag を False に設定し、スライドショーを開始します。
delayTimeは最初の切り替え速度です。 最初は素早くスライドを切り替え、表示回数ごとにslowDownFactor を掛け算することでスライド切り替え速度を徐々に減速します。
slowDownFactorの数値を変えることで、減速の仕方を変えることができます。また、ルーレットの回数はFor文の繰り返し回数を変更することで、アレンジできます。

上記のうち、Waitは以下のサブ関数で定義されています。
VBAには Sleep 関数がないため、 Timer を利用して待機時間を作成しています。DoEvents を入れることで、PowerPointの処理が止まらないようにしています。

Sub Wait(ByVal seconds As Double)
    Dim startTime As Double
    startTime = Timer
    Do While Timer < startTime + seconds
        DoEvents ' 処理を継続
    Loop
End Sub
5. 最終スライドを確定

 finalSlide にランダムで選ばれたスライド番号を表示します。
stopFlag = True にすることで、後のクリックイベントでスライド1へ戻る動作を有効化します。

finalSlide = slideArray(Int((numSlides - 1) * Rnd + 2))
ActivePresentation.SlideShowWindow.View.GotoSlide finalSlide
stopFlag = True

5-3. スライドショー中のクリックでスライド1に戻る

ルーレットが止まった後にクリックすると、スライド1へ戻ります。
stopFlag をリセットして、再度ランダム切り替えを実行可能になります。

Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
    If stopFlag Then
        Wn.View.GotoSlide 1
        stopFlag = False
    End If
End Sub

6. 応用アイデア

ここまでで設定したままでも使えますが、演出を加えたり、ルーレットとしての応用例を紹介します。

演出の追加

スライド切り替えの設定を加えることで、ルーレットの演出をアレンジすることができます。

  • スライド切り替えのアニメーションを追加する
  • スライド切り替え時のサウンドを設定する

ルーレットとしての応用例

「写真で一言」をスライドで作成することができます。作り方は以下の記事が参考になります。

「早口言葉ルーレット」も応用例として作成できます。以下の書籍が面白くてネタとして参考になります。

7. まとめ

VBAを使えば、PowerPointでスライドをルーレット風に切り替えることができます。

どんな場面で試してみたいですか? ぜひ実践して、活用方法を広げてみてください!

自分なりのアレンジを加えて、独自のプレゼンやイベントを作ってみるのもおすすめです。

所長
所長

  • この記事を書いた人
  • 最新記事

-資料作成