Не уверен, о чем идет речь об Open XML, который является инструментом для манипулирования содержимым.То, что вы пытаетесь сделать, предположительно правильно запрограммировано объектной моделью.
Вот что я бы сделал:
Public Sub SeeIfAShowIsRunning()
If SlideShowWindows.Count > 0 Then
Debug.Print "yep, something is there. Let me check further."
If SlideShowWindows.Count > 1 Then
Debug.Print "uh huh, there are " & SlideShowWindows.Count & " shows running"
Debug.Print "hold on, i'll figure this out for you"
For i = 1 To SlideShowWindows.Count
If ActivePresentation.Name = Presentations.Item(i).Name Then
Debug.Print "i found you. your name is: " & ActivePresentation.Name
Else
Debug.Print Presentations.Item(i).Name & " is a fine pptx, but not the one i want"
End If
Next
End If
Else
Debug.Print "nope, you're in editing mode"
End If
End Sub
Это будет работать во всех версиях PowerPoint.В PowerPoint 2010 технически можно запустить более одного окна слайд-шоу, но только одно из них будет активным, поэтому я бы продолжил поиск активного окна и получил бы его .Presentation
, и если оно соответствует ActivePresentation
,затем запускается слайд-шоу вашей ActivePresentation, как указано выше.
Если вы используете PowerPoint 2007 или ниже, это не проблема, и вы можете удалить оператор If SlideShowWindows.Count > 1 Then
.