youtubeチャンネル運用中

パワーポイントのスライドの順番をランダムに再生するマクロを紹介

PowerPoint
スポンサードリンク

たった数行のマクロを書くだけで、パワーポイントにおけるスライドの順番をランダムに再生することができる方法を紹介します。オリジナルのフラッシュカードの作成にも有効です。プログラムの意味は簡単に紹介はしますが、プログラムと聞くだけで難しく感じる場合でも、今回紹介するプログラムはコピペするだけで誰でも実行可能な方法ですのでぜひ参考にしてみてください。

開発タブを有効にする

エクセルで処理を自動化するためにマクロやVBAという言葉を聞いたりしたことがあるかもしれません。(今回は総称してマクロと表記します)このマクロはエクセルでの利用が有名ですが、この機能はパワーポイントにもあります。ただデフォルトの状態では利用することができませんので、まず利用のための準備が必要です。

まずは準備からスタート

パワーポイントの上段に、ファイル、ホーム、挿入といったメニュータブがありますが、ここに開発」という項目を表示してあげる必要がります。

開発タブを表示させるためには

  • ファイルタブを選択し、その他オプションと進みます。
  • リボンのユーザー設定」の項目を選択し、「開発」にチェックを入れます。

チェックを入れるとメニュータブの中に「開発」という項目が現れ、リボンにはVisual Basic、マクロといった項目があるのがわかります。ここにコードを書いていくという流れです。

スライドを準備する(作例:フラッシュカードを作成)

スライドをランダムに表示するためには、元となるスライドが必要ですので、まずはスライドを準備します。今回作例とするのは、下記の通りトーン記号の音階を覚えるためのフラッシュカードを自作する想定にします。

スライドを作成するとスライドの枚数は全部で17スライド(17枚)になりました。スライドとしては1枚目からドレミ~と1音ずつ高くなっていくスライドです。このままスライドショーを実行してもフラッシュカードとしては単純すぎて機能しないので、これをランダム表示することが出来ればフラッシュカードとして機能させることができます。

実際にマクロを書いていく

一見難しいそうだけど大丈夫!書くコードはたったの5行。

では実際にプログラムのコードを書いていきますが、結論としてはよくわからなくても最終コピー&ペーストでも対応は可能ですのでご安心ください。

  • 開発タブのリボンの中にある「マクロ」をクリックします。
  • (マクロを新規作成する画面がポップアップするので)マクロ名の所にわかりやすい名称を入力します。(日本語でもOKです。)※作例ではトーン記号と入力しました。
  • 入力できたら「作成」をクリックします。
  • すると、コードを入力するための画面が表示されます。ここに(下記赤線部分)5行プログラムを書いていきます。

先に結論:スライド枚数が17枚の場合5行のコードはこの通り

Sub トーン記号()

For i = 1 To 17
Randomize
R = Int(17 - 1 + 1 * Rnd + 1)
ActivePresentation.Slides(i).MoveTo (R)
Next i

End Sub

数字の1は、スライドの1枚目を指していて、数字の17はスライドの最後の枚数を指しています。仮に、スライドの枚数が20枚なら17を20に(2か所)変更すればOKです。この5行をSubとEnd Subの間にコピペすれば作業としてはOKです。

Sub トーン記号()、End Sub はプロシージャと呼ばれる、ここからここまでが一つのプログラムの塊ですという事を示しています。この部分は最初から入力されているので、この部分は削除しないよう、この間にコードを書いていくのがルールです。

この後少し各コードについて解説するよ。難しければすっ飛ばしてOK。

コードのポイント解説:「For~Next」

コードの1行目と5行目に注目すると「For」と「Next」という表記があります。これは繰り返し作業を行うときに記述するステートメントです。

ステートメントとは、条件によって処理を変えたり、同じ処理を何度が繰り返すなど、マクロの動きを制御する動きをする命令の事です。有名なものは下記の通りです。

  • Ifステートメント
  • For~Nextステートメント
  • Withステートメント

For~Nextステートメントとは、同じ処理を何度か繰り返すこと時に使用するステートメントです。構文は以下の通りで、ForとNextの間に書いた処理が、初期値から終了値まで繰り返されるという記述になっています。

For 変数名 = 初期値 To 終了値
   処理
Next 変数名

For~Nextステートメントには変数が使用されます。変数は入れ物(箱)と理解すると良いと思います。この変数に、繰り返される回数の数値が格納されます。For~Nextステートメントの変数は一般的に「i」「j」「k」が使用されることが多いです。

つまり、For i = 1 To 17は、今回のスライドは1枚目~17枚目まであるので、初期値は1で、終了値は17になります。1から順に変数「i」に数値が格納され、以下の処理が行われ、次に2が格納され処理が行われ、3,4…17まで処理が繰り返されるという意味になります。

コードのポイント解説:「Rnd関数」「Int関数」

コードの3行目は、ランダムな整数を値を取得するための記述になっています。

そしてまず「Rnd」という表記に注目します。これはRnd関数と呼ばれるものが記載されています。

Rnd関数は、0以上1未満の乱数を返します。

つまり、少数の値をランダムに表示させるという関数です。

Rnd関数では少数の値をランダム発生させるので、これを整数にする必要があります。次に注目するのは「Int」です。これはInt関数と呼ばれるものが記載されています。

Int 関数は、指定した数値の整数部を返します。

つまり、少数部分は切り捨てるという関数です。

これらのInt関数とRnd関数を組み合わせることで、ランダムな整数を作り出すことが出来るという訳です。指定した範囲の整数を取得するには、以下のように記述します。

Int((最大値 - 最小値 + 1) * Rnd + 最小値))
※最大値はスライドの最後(の枚数)。最小値はスライドの最初を入力すればOK

R = Int(17 – 1 + 1 * Rnd + 1)

※最初のRは変数なので、AでもBでも何でもOKです。

指定した範囲の整数を取得は、もう数式として理解した方が早そう。詳細はこちらのサイトなどを見ると良いかも。【ExcelVBA入門】Rnd関数・Int関数を使った乱数取得方法を徹底解説! | 侍エンジニアブログ (sejuku.net)

コードのポイント解説:「Randomize」

コードの2行目には、「Randomize」とあります。意味は文字通りランダムに表示するための記述ですが、これはRnd関数とセットで記述するものと理解すると良いと思います。

Randomizeを記述しておくことで、乱数の重複を防いでくれるという理解でよいと思います。詳しくはこちらが参考になると思います。VBAで乱数を発生させる(Rnd、Randomize) | Excel作業をVBAで効率化 (vbabeginner.net)

コードのポイント解説:「ActivePresentation.Slides(i).MoveTo (R)」

コードの4行目にあるActivePresentation.Slidesは、操作の対象を示しています。何となくスライドの事を指しているのがわかると思います。そして(i)ですが、これはFor~Nextで出てきた変数です。1~17まで順番に格納されるという訳です。つまりActivePresentation.Slides(1)となれば「1枚目のスライドに対して…」という意味です。

MoveToは命令です。これも何となく移動しろという命令であることがわかると思います。そして、(R)は3行目で指定した変数です。ランダムな整数が順に入っていくという流れになります。

マクロを実行

プログラムの記述が出来たら、「×」で閉じてしまいましょう。

スライドの画面に戻ったら、リボン内にある①「マクロ」を選択して、②マクロ名の「トーン記号」を選択して、③「実行」を選択すると、スライドがランダムに移動すると思います。

再度ランダムに表示したい場合は、①②③の作業をすれば、さらにランダム表示されます。

保存の際の注意事項

このファイルを保存するときに、このマクロを有効にしておきたい場合は、ファイル形式を「pptm」を選択する必要がありますので注意が必要です。

いちいちマクロを呼び出すのが面倒な場合の対処法

ランダムにしたい時に、いちいち「マクロ」を実行するのは面倒な時は、スライド内にマクロを実行するボタンなどを設置するとスマートです。

作例として、1枚目のスライドにマクロを実行するボタンを設置してみたいと思います。

  • 1枚目のスライドに新規スライドを挿入します。
  • 挿入の図形から任意の図形を配置します。(これをボタンにします)
  • (図形を選択した状態で)挿入>動作を選択します。
  • (ポップアップ画面が立ち上がるので)その中から「マクロの実行」を選択します。

これにより、スライドショーを実行したときに、このボタンをクリックするとマクロが実行されて、スライドがランダムになります。

上記のままですと、1枚目のスライドまでランダムになってしまうので、マクロのコードを一部修正する必要があります。1枚目にスライドを挿入したため、1枚目は固定で、ランダムにしたいのは2枚目から18枚目となりますので、1→2に17→18に変更する必要があります。

For i = 2 To 18
Randomize
R = Int(18 - 2 + 1 * Rnd + 2)
ActivePresentation.Slides(i).MoveTo (R)
Next i

マクロの編集は下記から行います。

フラッシュカードにするには、画面切り替えの秒数を調整

フラッシュカードは、自動でめくれてくれた方がスマートです。この設定は、画面の切り替えタブで設定を行います。画面切り替えのリボンの右の方に、「画面切り替えのタイミング」を設定できる箇所がありますので、自動にチェックを入れ、秒数を指定すればOKです。

実際にト音記号を覚えるためのフラッシュカードを作成してみた

コメント

タイトルとURLをコピーしました