Home » パワーポイントマクロ・PowerPoint VBAの使い方 » セクション » PowerPoint VBAでアクティブセクションの先頭と最後のスライド番号を取得する

PowerPoint VBAでアクティブセクションの先頭と最後のスライド番号を取得する

対象:PowerPoint2010, PowerPoint2013

VBAでPowerPointマクロを作成していて、アクティブなセクションの、先頭と最後のスライドのスライド番号(SlideIndex)を取得する必要がありました。

自分の備忘録の意味も込めて、アクティブセクションの先頭と最後のSlideIndexを取得するPowerPointマクロを公開しておきます。

[スポンサードリンク]

アクティブなセクションの先頭と最後のスライドのSlideIndexを取得するサンプルマクロ

以下のマクロを実行すると、アクティブなセクションの先頭と最後のスライドのSlideIndexが、イミディエイトウィンドウに出力されます。

Sub アクティブセクションの先頭と最後のSlideIndexを取得する()
 Dim sec_id As Long
 sec_id = ActiveWindow.Selection.SlideRange.sectionIndex

 With ActivePresentation.SectionProperties
  Debug.Print "先頭のSlideIndex:" & _
    .FirstSlide(sec_id)
  Debug.Print "最後のSlideIndex:" & _
    .FirstSlide(sec_id) + .SlidesCount(sec_id) - 1
 End With
End Sub

エラー処理を入れていませんので、セクションという概念自体が存在しない2007以前のPowerPointで実行したときや、セクションのないプレゼンテーションをアクティブにしておいて実行すると実行時エラーが発生します。

サンプルマクロで行っている処理

アクティブなスライドのsectionIndexを取得して、
  sec_id = ActiveWindow.Selection.SlideRange.sectionIndex

そのsectionIndexの、セクションの先頭スライドのSlideIndexと、
  With ActivePresentation.SectionProperties
   Debug.Print "先頭のSlideIndex:" & _
     .FirstSlide(sec_id)

セクションの最後のスライドのSlideIndexに該当する数値をイミディエイトウィンドウに出力しています。
   Debug.Print "最後のSlideIndex:" & _
     .FirstSlide(sec_id) + .SlidesCount(sec_id) - 1

SectionPropertiesは異質なオブジェクト

「SectionProperties」という名前から全セクションを表すコレクションで、個々のセクションを表す単独のオブジェクトが存在しているように考えてしまう方がいるかもしれませんが、PowerPointのセクションを操作するオブジェクトは、そのような構造にはなっていません。

一般的なコレクションオブジェクトと単独のオブジェクトという構造になっていれば、全セクションを表すコレクションオブジェクトから、Itemメソッドで個別のセクションを表す単一オブジェクトを取得して、その先頭と最後のSlideIndexを取得する、という流れになります。

しかし、SectionPropertiesオブジェクトの場合、そのような構造とはなっていませんので、まったく違う形のコードになります。

SectionPropertiesオブジェクトのFirstSlideメソッドの引数に、セクションのインデックスを指定すると、指定されたセクションの最初のスライドのSlideIndexを取得できます。

アクティブセクションの先頭と最後のスライド番号を取得する

最後のスライドのSlideIndexを返すLastSlide的なメソッドは用意されていませんが、SlidesCountメソッドを使うと指定されたセクションに含まれるスライドの枚数が取得できますから、

アクティブセクションの先頭と最後のスライド番号を取得する

先のFirstSlideメソッドで返される数値と組み合わせて、
   .FirstSlide(sec_id) + .SlidesCount(sec_id) - 1
アクティブセクションの最後のスライドのSlideIndexに該当する数値を作成しています。

最終更新日時:2020-04-25 10:20

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » セクション » PowerPoint VBAでアクティブセクションの先頭と最後のスライド番号を取得する

「セクション」の記事一覧

検索


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

.