Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » 全スライドを含む目的別スライドショーを作るPowerPointマクロ

全スライドを含む目的別スライドショーを作るPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

全スライドを含む目的別スライドショーを作るPowerPointマクロ

一つのプレゼンテーションファイルを作成したあと、そのプレゼンテーションファイルをベースにして、スライドの順番を変更したり一部のスライドを削除したりして、別のプレゼンテーションファイルを作りたいと感じることがあります。

そんなときに便利な[目的別スライドショー]という機能がPowerPointにはあります。

目的別スライドショーへの不満

便利な機能ではありますが、大量のスライドが存在しているプレゼンテーションファイルファイルで、目的別スライドショーを作成しようとしたときには、ちょっと面倒です。

どのスライドを新しい目的別スライドショーで使うのかを、[目的別スライドショーの定義][目的別スライドショーの設定]ダイアログで、一つ一つ選択する必要があるからです。

ほとんどのスライドを利用して、新しく目的別スライドショーを作るような場合、一旦全部のスライドの登録された目的別スライドショーを作成して、不要なスライドを削除していくほうが便利なはずです。

あっても良さそうな機能ですが、現状のPowerPointにはそんな機能は存在していません。

[スポンサードリンク]

全スライドを含む目的別スライドショーを作るマクロ

そんなことをしてくれるマクロを、VBA(Visual Basic for Applications)で作成したので、ご紹介しておきます。
Sub 全スライドを含む目的別スライドショーを作成する()
 Dim ss_name As String ' 目的別スライドショーの名前
 Dim sld_ids() As Long ' SlideID
 Dim sld_cnt As Long  ' スライドの数
 Dim i As Long
 
 ss_name = _
   InputBox("作成する目的別スライドショーの名前を入力してください。")
 
 ' SlideIDの配列を作る
 With ActiveWindow.Presentation
  sld_cnt = .Slides.Count
  ReDim sld_ids(1 To sld_cnt)
  For i = 1 To sld_cnt
   sld_ids(i) = .Slides(i).SlideID
  Next i
 End With
 
 On Error GoTo ERR_HNDL
 
 ' 目的別スライドショーの作成
 ActivePresentation. _
  SlideShowSettings.NamedSlideShows.Add _
    Name:=ss_name, _
    SafeArrayOfSlideIDs:=sld_ids
  
 MsgBox "目的別スライドショー【" & ss_name & "】を作成しました。"
 Exit Sub
 
ERR_HNDL:
 MsgBox "指定された名前では目的別スライドショーを作成できないのでマクロを終了します。"
End Sub

上記のマクロを実行すると「作成する目的別スライドショーの名前を入力してください。」と表示されたインプットボックスが表示され、入力された名前に問題がなければ、アクティブなプレゼンテーションファイルの全スライドを含んだ目的別スライドショーが作成されます。

目的別スライドショーを作成しているのは、最後のほうの
 ActivePresentation. _
  SlideShowSettings.NamedSlideShows.Add _
    Name:=ss_name, _
    SafeArrayOfSlideIDs:=sld_ids
です。

NamedSlideShows.Addメソッドの引数・SafeArrayOfSlideIDsには、SlideオブジェクトのSlideIDを配列にして指定する必要があります。

全スライドを含む目的別スライドショーを作るPowerPointマクロ

その配列を作っているのが
 With ActiveWindow.Presentation
  sld_cnt = .Slides.Count
  ReDim sld_ids(1 To sld_cnt)
  For i = 1 To sld_cnt
   sld_ids(i) = .Slides(i).SlideID
  Next i
 End With
の部分です。

既存の目的別スライドショーと同じ名前が指定されたときなどにはエラーとなるので、その場合メッセージを表示して、マクロを終了しています。
  On Error GoTo ERR_HNDL
 ERR_HNDL:
  MsgBox "指定された名前では目的別スライドショーを作成できないのでマクロを終了します。"
 End Sub

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » 全スライドを含む目的別スライドショーを作るPowerPointマクロ

「スライドショー」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.