Sie: Du, ich war beim Friseur! – Er: Und – was hast du dort gemacht?

VBA-Schulung. Eine Teilnehmerin möchte mehrere Diagramme per VBA nach PowerPoint von Excel kopieren:

Wir beginnen.

Wir setzen einen Verweis auf die PowerPoint-Objektbibliothek.

Wir greifen auf PowerPoint zu und lassen das Programm anzeigen:

Sub PowerPointZugriff()
    Dim ppApp As PowerPoint.Application
    Dim ppPräsentation As PowerPoint.Presentation
    Dim ppFolie As PowerPoint.Slide
    
    Dim xlBlatt As Worksheet
    Dim i As Integer
    
    Set xlBlatt = ActiveSheet
    
    Set ppApp = New PowerPoint.Application
    ppApp.Visible = msoTrue

Klappt.

Wir erstellen eine neue Präsentation:

Set ppPräsentation = ppApp.Presentations.Add

Klappt.

Wir fügen eine neue Folie ein – eine Fehlermeldung ist die Folge:

Ich erinnere mich: VBA schlägt zwar die Methode AddSlide mit zwei Parametern vor:

Korrekt wäre jedoch die Methode Add:

Set ppFolie = ppPräsentation.Slides.Add(1, ppLayoutTitleOnly)

Und damit funktioniert das Programm:

Sub PowerPointZugriff()
    Dim ppApp As PowerPoint.Application
    Dim ppPräsentation As PowerPoint.Presentation
    Dim ppFolie As PowerPoint.Slide
    
    Dim xlBlatt As Worksheet
    Dim i As Integer
    
    Set xlBlatt = ActiveSheet
    
    Set ppApp = New PowerPoint.Application
    ppApp.Visible = msoTrue
    Set ppPräsentation = ppApp.Presentations.Add
    
    For i = 1 To xlBlatt.ChartObjects.Count
        Set ppFolie = ppPräsentation.Slides.Add(i, ppLayoutTitleOnly)
        ppFolie.Shapes(1).TextFrame.TextRange.Text = "Überschrift " & i
        xlBlatt.ChartObjects(i).Copy
        ppFolie.Shapes.Paste
    Next i
    ' Achtung: nicht AddSlides sondern Add

Das Ergebnis:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.