「パワーポイント スライドショー ランダム表示」
という検索が行われていました。
スライドショーを実行するときに、ランダムにスライドを表示させる方法を探している方による検索でしょうか。
プレゼンテーションを実行するときに、ランダムな順番でスライドを表示させるためには、ちょっとパワーがいりますが、プレゼンテーション実行前にスライドの順番をランダムに変更するということならば、簡単なマクロでできます。
英語圏では「Randomize the order of a PowerPoint presentation」で紹介されているようなロジックがメジャーなようで、類似したコードをあちこちで見かけます。
スライドをランダムに並べ替えるサンプルマクロ
ただ、いくつか気になる箇所があるので、少しだけコードを修正したマクロをご紹介させていただきます。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 = Int((i * rnd) + 1)
ActivePresentation.Slides(sld).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 1).Select
ActiveWindow.View.Paste
Next i
End Sub
サンプルマクロの解説
メインの並び替え処理をしているのは、
For i = 1 To cnt
sld = Int((i * rnd) + 1)
ActivePresentation.Slides(sld).Select
ActiveWindow.Selection.Cut
ActivePresentation.Slides(cnt - 1).Select
ActiveWindow.View.Paste
Next i
の部分です。
ループ処理に入ってすぐ
sld = Int((i * rnd) + 1)
で、変数・sldに1からスライド総数までの整数の乱数を格納しておいて
そのスライド番号のスライドを選択して
ActivePresentation.Slides(sld).Select
切り取りを行い
ActiveWindow.Selection.Cut
一番最後のスライドを選択して
ActivePresentation.Slides(cnt - 1).Select
貼り付けを
ActiveWindow.View.Paste
行っています。
このメインの処理に入る前に、そもそもスライドが1枚しかなければすぐにSubプロシージャを抜ける処理や
If cnt < 2 Then Exit Sub
スライド一覧モードにする処理
ActiveWindow.ViewType = ppViewSlideSorter
乱数を初期化したり
Randomize
を行っています。
英語圏でよく見かけるコードは、なぜかループの中で
ActiveWindow.ViewType = ppViewSlideSorter
を何度も実行しているのですが、これはループ処理に入る前に1回だけやればいいと思います。
乱数の初期化もしておくほうがいいでしょうから
Randomize
を追加しています。
このマクロを実行しておいてから、スライドショーを開始すれば、毎回ランダムな順序でスライドショーが実行されるというわけです。
上記のマクロは、スライドの順番を実際に変更してしまうので、元のプレゼンテーションの順番を残しておきたいのならば、コピーしたファイルで上記のマクロとスライドショーを実行するようにして、元のファイルは残しておくといいでしょう。
- Newer:あっという間に時間が過ぎ、内容的にも充実
- Older:実務に即したマクロ例の初級講座
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » スライドをランダムに並び替えるPowerPointマクロ