PowerPointのマクロを触っていて、「ActiveSlide」のようなアクティブなスライドを取得するプロパティがないようだったので関数を自作しました。
Option Explicit Public Sub Sample() Dim p As PowerPoint.Presentation Dim s As PowerPoint.Slide For Each p In Application.Presentations Set s = GetActiveSlide(p) If s Is Nothing Then MsgBox "アクティブなスライドを取得できません。", vbCritical + vbSystemModal Else MsgBox "インデックス番号:" & s.SlideIndex & vbCrLf & "オブジェクト数:" & s.Shapes.Count, vbInformation + vbSystemModal End If Next End Sub Public Function GetActiveSlide(ByVal p As Presentation) As Slide Dim ret As Slide Set ret = Nothing '初期化 On Error Resume Next Set ret = p.Slides.FindBySlideID(p.Windows(1).Selection.SlideRange.SlideID) On Error GoTo 0 Set GetActiveSlide = ret End Function
関数の仕組みは単純で、選択しているSlideRangeオブジェクトのSlideIDプロパティを、SlidesオブジェクトのFindBySlideIDメソッドに渡すことでSlideオブジェクトを取得しています。
この記事へのコメントはありません。