今回も会員様よりご質問いただきましたお問い合わせについて、解説も含め説明いたします。
要件①:パワーポイントのスライドショーを毎回ランダム表示させたい
要件②:表紙と最終ページは固定
要件③:ページ数は変動する(10枚のときもあれば20枚のときも・・・)
今回はパワーポイントの「Visual Basic機能」を使って実現したいと思います。
ランダム表示パワーポイントの作成
まずはパワーポイントのマクロ機能使うための準備を行います。
①「ファイル」タブで表示されたメニューから「オプション」を選択します
②表示されたメニューから「リボンのユーザー設定」をクリック
③メニュー項目が表示されます。
「開発」に☑(チェック)が入っていなければ、チェックを入れます。
これで最初のメニューに「開発」というタグが表示されます。
④「開発」タグから「Visual Basic」を選択。
あらたな開発ページが立ち上がると思います。
⑤「挿入」タグを押して「標準モジュール」を選択します。
表示されたページにコードを記述していきます。
では次のコードを記述、またはコピー&ペイストで標準モジュールに書き写してください。
シングルクォーテーション(')で始まる部分(緑色の部分)はコメントですので、記述しなくても大丈夫です。
コメント行には各コードの意味を記しておきます。
Sub RandomSS()
Dim PgSum, SS, i, M, N, SetSS() '変数宣言
On Error Resume Next 'エラー発生時はエラーを無視して次の処理に移動
ActivePresentation.SlideShowSettings.NamedSlideShows("CurrentSS").Delete
'CurrentSS という名前のスライドショーを取得し削除
On Error GoTo 0 '上記で指定した「On Error Resume Next」は以下の行まで
PgSum = ActivePresentation.Slides.Count '最後のスライド番号を取得
ReDim SetSS(PgSum) '関数の設定
For i = 2 To PgSum - 1 '2枚目からページ数-1 だけ繰り返す
SS = SS & Format(i, "000") & "," 'テキスト指定 例)SS002,SS003,SS004,…
Next
With ActivePresentation '作業中のプレゼンシートの指定
SetSS(1) = .Slides(1).SlideID '関数の定義
SetSS(PgSum) = .Slides(PgSum).SlideID
For i = 2 To PgSum - 1 '2枚目からページ数-1 だけ繰り返す
M = Int(Rnd * (PgSum - i)) '(1~ページ数-i)の乱数を取得しMに代入
N = Split(SS, ",")(M) 'SSを","で分割して配列化、M番目の値を取得
SetSS(i) = .Slides(N * 1).SlideID '関数で乱数番目のスライドを指定
SS = Replace(SS, N & ",", "") 'SS を置き換える
Next
With .SlideShowSettings 'SlideShowSettings(次に表示するスライド)の指定
.RangeType = ppShowNamedSlideShow
.NamedSlideShows.Add "CurrentSS", SetSS '"CurrentSS" をスライドショーに追加
.SlideShowName = "CurrentSS" '"CurrentSS"名のスライドショーを実行
.Run
End With
End With
End Sub
以下のような感じになりますね。
これでいったんファイルを保存しておきます。
マクロが入っているので、通常の(.pptx)では保存できません。
マクロ有効プレゼンテーション(.pptm) を指定します。
ランダム表示パワーポイントの実行
このファイルを実行する方法は簡単です。
⑥「開発」タグから「マクロ」を選択
⑦先ほど作成したRandomSS というマクロを選択し、「実行」
これで毎回ランダムに並んだスライドショーが実行されます。
教室では実際に通って頂いての授業の他、ちょっとしたお困りごとに対するオンライン授業やオンラインサポートも行っております。
お困りごとのある方、ご興味がある方は、ぜひお問い合わせください。
お問い合わせは こちら から。
体験授業のお申込みは こちら から。
Comments