PPT: Chart von Excel in PowerPoint-Placeholder einfügen

  • Sonstige

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Kunibert2.

    PPT: Chart von Excel in PowerPoint-Placeholder einfügen

    Hallo zusammen,

    ich möchte gerne mehrere Grafiken mit VBA von Excel nach PowerPoint schicken, und zwar möglichst so, dass dabei der Platz des Placeholders komplett genutzt wird und die Grafik auch in starker Vergrößerung scharf aussieht.
    Ich habe mir einen Ast daran abgebrochen irgendwie da mit der .paste Funktion zu Rande zu kommen, aber leider ohne Erfolg. Untriges zeigt die simpelste Variante, die aber die Grafik mit ihrer Mitte auf die obige, linke Bildschirmecke setzt. Ich weiss wie man sie da nachher wieder herunter bekommt, aber ich möchte den Placeholder benutzen, weil ich flexibel auf verschiedene Templates reagieren möchte.
    Außerdem soll das Gesamtbild harmonisch sein, und die Grafik nicht nur "ungefähr mittig" sein.

    Vielen Dank im Voraus!

    Visual Basic-Quellcode

    1. Sub CreateNewPowerPointPresentation()
    2. Dim pptApp As PowerPoint.Application
    3. Dim pptPres As PowerPoint.Presentation
    4. Dim pptSlide As PowerPoint.Slide
    5. Dim intSlideNbr%
    6. Dim intSheetNbr%
    7. On Error GoTo 0
    8. 'Create Powerpoint Presentation and open Powerpoint
    9. Set pptApp = CreateObject("PowerPoint.Application")
    10. pptApp.Visible = msoTrue
    11. Set pptPres = pptApp.Presentations.Add(WithWindow:=msoTrue)
    12. 'Create Cover Slide
    13. Set pptSlide = pptPres.Slides.Add(Index:=1, Layout:=ppLayoutTitle)
    14. pptSlide.Shapes(1).TextFrame.TextRange.Text = "Project Name"
    15. pptSlide.Shapes(2).TextFrame.TextRange.Text = Format(Date, "dddddd")
    16. 'Create Slides with Title and the one Chart that'S on the sheet
    17. intSlideNbr = 2
    18. For intSheetNbr = 1 To ThisWorkbook.Worksheets.Count
    19. Set pptSlide = pptPres.Slides.Add(Index:=intSlideNbr, Layout:=ppLayoutObject)
    20. Sheets(intSheetNbr).ChartObjects(1).CopyPicture
    21. pptSlide.Shapes(1).TextFrame.TextRange.Text = ThisWorkbook.Sheets(intSheetNbr).Name
    22. pptSlide.Shapes.Paste
    23. intSlideNbr = intSlideNbr + 1
    24. Next intSheetNbr
    25. pptPres.SaveAs "D:\Presentation", ppSaveAsShow
    26. 'Exit
    27. ExitPpt:
    28. Application.CutCopyMode = False
    29. Set pptApp = Nothing
    30. Set pptPres = Nothing
    31. Set pptSlide = Nothing
    32. End Sub
    Bitte gebe erste einmal an welche Officeversion du verwendest. Hier gibt es nämlich große Unterschiede.

    Soll der Import als OLE oder als Graphik passieren oder willst Du nur die Werte in das Diagrammobjekt von Powerpoint einladen?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Es handelt sich hier um Office 2007 und ich schreibe das ganze in der implementierten Programmierumgebung von Excel in VB6.

    Als OLE wäre es denkbar (wenn es in der PPT gespeichert wird), aber als Grafik war es ursprünglich angedacht und würde auch schon reichen.
    Da ich die Grafik bereits "angereichert" und dekoriert habe und in Excel vorher nur eben automatisiert die Daten und Feldbezüge angepasst werden bevor es nach PowerPointgeht, würde ich nicht so gern erst noch Powerpoint erklären müssen, wie die Grafik/das Diagramm am Ende aussehen soll. Das soll weitgehend Handarbeit bleiben.