0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PowerPoint】スライドをランダムで表示

Last updated at Posted at 2019-12-04

##はじめに

スライドをランダムに並び替えるPowerPointマクロをベースにスライドの順番をランダムに入れ替えるマクロを作ってみました。

  • スライドをランダムにする

  • スライドを2枚セットでランダムにする

FrashCard.gif

##マクロ実行のタイミング

スライドショー終了時にマクロを実行する。
スライドショーを再生する前にスライドを並び替えるのは難しくスライドショーを一度再生し、次にスライドショーを再生する時にスライドの順番がランダムで並び替わっているという方法にした。
※コードは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でランダムに再生する方法に関して説明しました。

  • スライドをランダムで再生する

  • 問題と解答のスライドをセットでランダムにする

スライド数やスライドの内容を変更しても問題ありません。
タイトルには「よ~い!」とか入れてみてください。
フラッシュカードの設定はタイトルスライド以降のスライドを選択し、画面切り替えのタイミングを自動にして時間を設定してください。

足し算、引き算、九九などにぜひご活用ください。

応用編はこちら

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?