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: