Exceldiagramme in PPT via VBA

  • Excel

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

    Exceldiagramme in PPT via VBA

    hi liebe community,

    ich wuerde sehr gerne aus einem ziemlich grossen Excel sheet eine PPT erzeugen lassen in der viele Diagramme drin sind.

    Bsp:

    Auf Sheet 2 habe ich 3 Diagramme, diese sollen schoen sortiert auf der PPT in einer Silde dargestellt werden.

    Auf Sheet 3 habe ich 5 Diagramme, diese sollen auch schoen sortiert auf der PPT in einer Silde dargestellt werden.

    Ich habe lange herumgesucht und habe dabei diesen code gefunden.



    Sub ChartObjectsNachPowerpoint()

    Dim pptApp As Object, pptPres As Object
    Dim chtObj As Object, shp As Object, i, sl

    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    Set pptPres = pptApp.Presentations.Add(msoTrue)
    'Set pptPres = pptApp.Presentations.Add(msoTrue) 'erzeugt neue .ppt
    iter = 1
    While iter <= Sheets.Count
    Sheets(iter).Select
    For Each chtObj In ActiveSheet.ChartObjects
    chtObj.CopyPicture xlScreen, xlPicture
    i = i + 1
    If i Mod 2 = 0 Then
    'Koordinaten fürs 2te shape des slide
    Set shp = pptSlide.Shapes.Paste
    shp.Top = 300
    shp.Left = 300
    shp.Height = 200
    Else
    sl = sl + 1
    Set pptSlide = pptPres.Slides.Add(sl, 12) ' neues Blatt in ppt, 12 ist ohne Textfelder
    Set shp = pptSlide.Shapes.Paste
    shp.Top = 30
    shp.Left = 30
    shp.Height = 200
    End If
    'iter = iter + 1 das ist an dieser Stelle falsch und kann weg
    Next
    iter = iter + 1
    Wend
    pptApp.Visible = True
    End Sub





    Kann mir hier jemand helfen diesen zu modifizieren damit man die sildes so darstellen kann?
    waere super dankbar :)

    Danke schonmal im Vorraus.



    Gruesse Christoph
    Hallo Christoph,

    Bitte benutze die VB-Funktion zur Darstellung von VB/VBS/VBA-Code:

    Visual Basic-Quellcode

    1. Sub ChartObjectsNachPowerpoint()
    2. Dim pptApp As Object, pptPres As Object
    3. Dim chtObj As Object, shp As Object, i&, sl&
    4. Set pptApp = CreateObject("PowerPoint.Application")
    5. pptApp.Visible = False
    6. Set pptPres = pptApp.Presentations.Add(msoTrue) 'erzeugt neue .ppt
    7. iter = 1
    8. While iter <= Sheets.Count
    9. For Each chtObj In Sheets(iter).ChartObjects
    10. chtObj.CopyPicture xlScreen, xlPicture '<<------------#### ?? Was'n das?? xlScreen/xlPicture ???
    11. i = i + 1
    12. If i Mod 2 = 0 Then
    13. 'Koordinaten fürs 2te shape des slide
    14. Set shp = pptSlide.Shapes.Paste
    15. shp.Top = 300
    16. shp.Left = 300
    17. shp.Height = 200
    18. shp.Width = 200 '<<------------### Hat gefehlt ?!?
    19. Else
    20. sl = sl + 1
    21. Set pptSlide = pptPres.Slides.Add(sl, 12) ' neues Blatt in ppt, 12 ist ohne Textfelder
    22. Set shp = pptSlide.Shapes.Paste
    23. shp.Top = 30
    24. shp.Left = 30
    25. shp.Height = 200
    26. shp.Width = 200 '<<------------### Hat gefehlt ?!?
    27. End If
    28. Next
    29. iter = iter + 1
    30. Wend
    31. pptApp.Visible = True
    32. End Sub


    Ich hab' mich allerdings nicht mit der eingetlichen Funktion beschäftigt. Denn: Willst du die Charts verlinkt oder nur kopiert?
    hi higlav,

    ich moechten den chart nur als bild hineinkopiert bekommen :)



    Visual Basic-Quellcode

    1. Sub ChartObjectsNachPowerpoint()
    2. Dim pptApp As Object, pptPres As Object
    3. Dim chtObj As Object, shp As Object, i, sl
    4. Set pptApp = CreateObject("PowerPoint.Application")
    5. pptApp.Visible = True
    6. Set pptPres = pptApp.Presentations.Add(msoTrue)
    7. 'Set pptPres = pptApp.Presentations.Add(msoTrue) 'erzeugt neue .ppt
    8. iter = 1
    9. While iter <= Sheets.Count
    10. Sheets(iter).Select
    11. For Each chtObj In ActiveSheet.ChartObjects
    12. chtObj.CopyPicture xlScreen, xlPicture
    13. i = i + 1
    14. If i Mod 2 = 0 Then
    15. 'Koordinaten fürs 2te shape des slide
    16. Set shp = pptSlide.Shapes.Paste
    17. shp.Top = 300
    18. shp.Left = 300
    19. shp.Height = 200
    20. Else
    21. sl = sl + 1
    22. Set pptSlide = pptPres.Slides.Add(sl, 12) ' neues Blatt in ppt, 12 ist ohne Textfelder
    23. Set shp = pptSlide.Shapes.Paste
    24. shp.Top = 30
    25. shp.Left = 30
    26. shp.Height = 200
    27. End If
    28. 'iter = iter + 1 das ist an dieser Stelle falsch und kann weg
    29. Next
    30. iter = iter + 1
    31. Wend
    32. pptApp.Visible = True
    33. End Sub




    und es geht mir hauptsaechlich um die positionierung mehrer diagramme auf einer slide. das muesste man doch mit einem loop hinbekommen oder?

    Gruesse,

    schonmal danke :)