##はじめに
スライドをランダムに並び替えるPowerPointマクロをベースにスライドの順番をランダムに入れ替えるマクロを作ってみました。
-
スライドをランダムにする
-
スライドを2枚セットでランダムにする
##マクロ実行のタイミング
スライドショー終了時にマクロを実行する。
スライドショーを再生する前にスライドを並び替えるのは難しくスライドショーを一度再生し、次にスライドショーを再生する時にスライドの順番がランダムで並び替わっているという方法にした。
※コードはSlideモジュールに記述してください。
##スライドをランダムにする
フラッシュカードを1枚ずつランダムに入れ替える。
###コード
Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
Dim sld As Long
Dim cnt As Long
Dim i As Long
cnt = ActivePresentation.Slides.Count
If cnt < 2 Then Exit Sub
ActiveWindow.ViewType = ppViewSlideSorter
Randomize
For i = 1 To cnt
sld = (cnt - 2) * Rnd + 2
ActivePresentation.Slides(sld).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 1).Select
ActiveWindow.View.Paste
Next i
ActiveWindow.ViewType = ppViewNormal
End Sub
###解説
Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
スライドを終了した時にマクロを自動実行する。
ExcelのAuto_OpenやWordのAutoOpenみたいなもの。
cnt = ActivePresentation.Slides.Count
スライド数をカウント。
If cnt < 2 Then Exit Sub
スライドが2枚(タイトルスライド含む)より少ない場合は順番を変えることができない為、マクロ終了。
ActiveWindow.ViewType = ppViewSlideSorter
Randomize
スライド一覧モードにし乱数を初期化。
For i = 1 To cnt
sld = (cnt - 2) * Rnd + 2
ActivePresentation.Slides(sld).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 1).Select
ActiveWindow.View.Paste
Next i
ここではタイトルスライドを除くスライド番号をランダムで指定し、カット&ペーストを行うことによって順番を入れ替えている。
それをスライド数、繰り返す。
ActiveWindow.ViewType = ppViewNormal
最後に標準モードに戻し終了。
##スライドを2枚セットでランダムにする
フラッシュカードでは問題と解答をセットでランダムにしたい場合もある。
###コード
Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
Dim sld As Long
Dim cnt As Long
Dim i As Long
cnt = ActivePresentation.Slides.Count
If cnt < 4 Then Exit Sub
ActiveWindow.ViewType = ppViewSlideSorter
Randomize
For i = 1 To cnt
sld = (cnt - 2) * Rnd + 2
If sld Mod 2 = 0 Then
ActivePresentation.Slides.Range(Array(sld, sld + 1)).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 2).Select
ActiveWindow.View.Paste
Else
i = i - 1
End If
Next i
ActiveWindow.ViewType = ppViewNormal
End Sub
###解説
上記のマクロと変更した部分は
If sld Mod 2 = 0 Then
ActivePresentation.Slides.Range(Array(sld, sld + 1)).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 2).Select
ActiveWindow.View.Paste
Else
i = i - 1
End If
この部分。
スライド番号が奇数だと問題と解答が離れてしまう為、偶数の場合のみ実行する。
選択したスライドとその次のスライドをカット&ペーストする。
奇数の場合は繰り返す回数を増やす。
##まとめ
主に教育現場で使われるだろうフラッシュカードをPowerPointでランダムに再生する方法に関して説明しました。
-
スライドをランダムで再生する
-
問題と解答のスライドをセットでランダムにする
スライド数やスライドの内容を変更しても問題ありません。
タイトルには「よ~い!」とか入れてみてください。
フラッシュカードの設定はタイトルスライド以降のスライドを選択し、画面切り替えのタイミングを自動にして時間を設定してください。
足し算、引き算、九九などにぜひご活用ください。
応用編はこちら