Powerpoint Autoupdate Überschriften

Categories:

Erstelle von Header 1 Zeilen aus Zwischenüberschriften

Powerpoint Autoupdate Überschriften

PPT - VBA

Sub LeseUndFuegeTextEin()
    Dim pptSlide As Slide
    Dim pptShape As Shape
    Dim textToInsert As String
    Dim targetHeight As Double
    Dim targetLeft As Double
    Dim insertHeight As Double
    Dim insertWidth As Double
    Dim insertTop As Double
    Dim insertLeft As Double
    Dim shapeFound As Boolean
    Dim lnr As Integer
    lnr = -1
    
    ' Zielwerte für das Shape, aus dem der Text gelesen wird
    targetHeight = 85.03937
    targetLeft = 244.8972
    
    ' Zielwerte für das Shape, in das der Text eingefügt werden soll
    insertHeight = 14.54063
    insertWidth = 893.9164
    insertTop = 4.971102
    insertLeft = 11.3152
    
    ' Text aus dem Shape auf der aktuellen Folie lesen
    For Each pptSlide In ActivePresentation.Slides
        shapeFound = False
        
        ' Durchlaufen aller Shapes auf der Folie
        For Each pptShape In pptSlide.Shapes
            ' Überprüfen, ob das Shape die gewünschten Positionen hat
            If Abs(pptShape.Height - targetHeight) < 0.01 And Abs(pptShape.Left - targetLeft) < 0.01 Then
                ' Überprüfen, ob das Shape einen Textframe enthält und Text hat
                If pptShape.HasTextFrame Then
                    If pptShape.TextFrame.HasText Then
                        textToInsert = pptShape.TextFrame.TextRange.Text
                        shapeFound = True
                        lnr = lnr + 1
                        textToInsert = lnr & " - " & textToInsert
                        Debug.Print (textToInsert)
                        Exit For ' Stoppt die Schleife, wenn das Shape gefunden wurde
                    End If
                End If
            End If
        Next pptShape
        
        ' Wenn das Shape auf der aktuellen Folie gefunden wurde, Text auf den nächsten Folien einfügen
        If shapeFound Then
            Dim nextSlide As Slide
            For Each nextSlide In ActivePresentation.Slides
                If nextSlide.SlideIndex > pptSlide.SlideIndex Then
                    ' Durchlaufen aller Shapes auf der nächsten Folie
                    For Each pptShape In nextSlide.Shapes
                        ' Überprüfen, ob das Shape die gewünschten Positionen und Maße hat
                        If Abs(pptShape.Height - insertHeight) < 0.01 And Abs(pptShape.Width - insertWidth) < 0.01 _
                            And Abs(pptShape.Top - insertTop) < 0.01 And Abs(pptShape.Left - insertLeft) < 0.01 Then
                            ' Text in das Shape einfügen
                            If pptShape.HasTextFrame Then
                                pptShape.TextFrame.TextRange.Text = textToInsert
                            End If
                        End If
                        
                                ' Überprüfen, ob das Shape die gewünschten Positionen hat
                        If Abs(pptShape.Height - targetHeight) < 0.01 And Abs(pptShape.Left - targetLeft) < 0.01 Then
                            ' Überprüfen, ob das Shape einen Textframe enthält und Text hat
                            If pptShape.HasTextFrame Then
                                If pptShape.TextFrame.HasText Then
                        textToInsert = pptShape.TextFrame.TextRange.Text
                        shapeFound = True
                        lnr = lnr + 1
                        textToInsert = lnr & " - " & textToInsert
                        Debug.Print (textToInsert)
                        Exit For ' Stoppt die Schleife, wenn das Shape gefunden wurde
                                End If
                            End If
                        End If
                        
                    Next pptShape
                End If
            Next nextSlide
            
            Exit For ' Stoppt die Schleife, nachdem der Text eingefügt wurde
        End If
    Next pptSlide
    
    ' Nachricht an den Benutzer
    MsgBox "Text wurde auf den nächsten Folien eingefügt."
End Sub


Written on August 30, 2024