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オブジェクトを取得しています。

















この記事へのコメントはありません。