none
VBA Powerpoint: Auswahl des sichtbaren Fensters RRS feed

  • Frage

  • Hey ich habe ein kleines Problem und finde dazu im Internet nicht wirklich Hilfe, 

    Und zwar würde ich gerne die Folie auswählen, welche zur Zeit auf meinem Bildschirm ist (nicht während der SlideShow sondern im Bearbeitungsmodus),

    auch wenn ich keine Folie angewählt habe, dies würde unfassbar helfen mir einige Fehlermeldungen zu vermeiden.

    Mfg, ein verzweifelter VBA Anfänger :)! 

    Freitag, 8. Juni 2018 09:30

Antworten

  • ok, ich glaube jetzt habe ich verstanden.

    Es geht nicht um die ausgewählte (aktive) Folie sondern die letzte aktive die noch im Fenster zu sehen ist, aber nicht mehr aktiv ist.

    Wenn es das ist was Du meinst fällt mir nur eine etwas aufwendigere Variante ein.

    Man  müsste ein Slide_Change Event implementieren, welches immer die letzte noch aktive Folie (slide) in eine Variable schreibt.

    Über diese Variable hättest Du dann Zugriff auf das Slide.

    Und hier den passenden Code dazu:

    Zunächst das Modul:

    Public myEvents As New cEvent
    Public Sub Init()
        Set myEvents.PPTEvent = Application
    End Sub
    

    Das Init muss einmalig aufgerufen werden!

    Und hier die Klasse (cEvent) dazu:

    Public WithEvents PPTEvent As Application
    Public s As Slide
    Private Sub Class_Initialize()
        Set s = Nothing
    End Sub
    
    Private Sub Class_Terminate()
        PPTEvent = Nothing
    End Sub
    
    Private Sub PPTEvent_SlideSelectionChanged(ByVal SldRange As SlideRange)
        If SldRange.SlideIndex = 0 Then Exit Sub
        Set s = Application.ActiveWindow.View.Slide
        Debug.Print s.Name
    End Sub
    
    Public Sub Test()
        Debug.Print s.Name
    End Sub

    • Als Antwort markiert VBAJüngling Freitag, 8. Juni 2018 12:12
    • Bearbeitet Roland Franz Freitag, 8. Juni 2018 12:19 Um Beispielcode ergänzt
    Freitag, 8. Juni 2018 11:20

Alle Antworten

  • Hallo VBAJüngling,

    das sollte recht einfach sein, hier mal ein Code-Schnipsel:

    Dim w As PowerPoint.DocumentWindow
    Dim s As PowerPoint.Slide
    Set w = ActiveWindow
    Set s = w.View.Slide
    Debug.Print s.Name
    

    s zeigt auf die aktuell geöffnete Folie.

    Grüße

    Roland

    Freitag, 8. Juni 2018 09:55
  • Vielen Dank Roland, 

    Aber auch mit diesem Code, erhalte ich eine Fehlermeldung wenn ich keine Slide angewählt habe.

    Liebe Grüße,

    Vincent

    Freitag, 8. Juni 2018 10:03
  • ok, ich glaube jetzt habe ich verstanden.

    Es geht nicht um die ausgewählte (aktive) Folie sondern die letzte aktive die noch im Fenster zu sehen ist, aber nicht mehr aktiv ist.

    Wenn es das ist was Du meinst fällt mir nur eine etwas aufwendigere Variante ein.

    Man  müsste ein Slide_Change Event implementieren, welches immer die letzte noch aktive Folie (slide) in eine Variable schreibt.

    Über diese Variable hättest Du dann Zugriff auf das Slide.

    Und hier den passenden Code dazu:

    Zunächst das Modul:

    Public myEvents As New cEvent
    Public Sub Init()
        Set myEvents.PPTEvent = Application
    End Sub
    

    Das Init muss einmalig aufgerufen werden!

    Und hier die Klasse (cEvent) dazu:

    Public WithEvents PPTEvent As Application
    Public s As Slide
    Private Sub Class_Initialize()
        Set s = Nothing
    End Sub
    
    Private Sub Class_Terminate()
        PPTEvent = Nothing
    End Sub
    
    Private Sub PPTEvent_SlideSelectionChanged(ByVal SldRange As SlideRange)
        If SldRange.SlideIndex = 0 Then Exit Sub
        Set s = Application.ActiveWindow.View.Slide
        Debug.Print s.Name
    End Sub
    
    Public Sub Test()
        Debug.Print s.Name
    End Sub

    • Als Antwort markiert VBAJüngling Freitag, 8. Juni 2018 12:12
    • Bearbeitet Roland Franz Freitag, 8. Juni 2018 12:19 Um Beispielcode ergänzt
    Freitag, 8. Juni 2018 11:20