Tabelle per Knopfdruck aus Excel heraus in PowerPoint erstellen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Tabelle per Knopfdruck aus Excel heraus in PowerPoint erstellen

    Hallo liebe Comunity!

    Ich hab mich gerade hier registriert, weil ich Hilfe brauche :)
    Und zwar:
    Ich soll für die Arbeit eine Excel Datei anfertigen, in der man Daten einträgt und die dann danaben ein Diagramm aus den Daten erstellt. Soweit - fertig.
    Dann soll da ein Knopf hin, der bei Betätigung Powerpoint öffnet, eine neue Präsi erstellt und auf die erste Seite das Diagramm packt. Ebenfalls - bereits geschafft.
    Jetzt soll allerdings unter dieses Diagramm in PowerPoint eine längliche Tabelle erstellt werden in der die Urdaten gezeigt werden, also eine Tabelle mit 8 Spalten und zwei Zeilen (erste Zeile sind die Überschriften).

    An diesem Punkt komme ich trotz viel gegoogel nicht weiter : :/
    P.S.: Ich bin kein Informatiker! Ich arbeite in einem Metallunternehmen und habe keinerlei Vorkenntnisse von VBA gehabt!

    Das ist mein bisheriger Code:

    Option Explicit

    Sub ChartObjectsNachPowerpoint()

    Dim pptApp As Object 'Die PowerPoint Anwendung
    Dim pptPres As Object 'Die PowerPoint Präsentation
    Dim chtObj As Object, shp As Object, i
    Dim pptSlide As Object

    Set pptApp = CreateObject("PowerPoint.Application") 'PowerPoint starten
    Set pptPres = pptApp.Presentations.Add(msoTrue) 'Neue Präsentation
    Set pptSlide = pptPres.Slides.Add(1, 12)

    For Each chtObj In ActiveSheet.ChartObjects 'Durch alle ChartObjekte gehen
    chtObj.Chart.ChartArea.Copy
    i = i + 1
    Set pptSlide = pptPres.Slides.Add(i, 12) 'Layout bestimmen (blank)

    With pptApp
    pptPres.PageSetup.SlideSize = 15 'Auf 16:9 umstellen
    End With

    Set shp = pptSlide.Shapes.Paste 'Das eingefügte Chart ausrichten
    shp.Top = 100
    shp.Left = 75
    shp.Width = 600
    shp.Height = 150


    Next
    pptApp.Visible = True
    End Sub



    Es wäre wirklich Hammer, wenn ihr mir helfen könntet meinem Chef eine funktionierende Sache vorzulegen!
    Du musst Deine Tabelle als ListObject deklarieren und dann kannst du es z.B. mit Copy PasteSpecial in die Präsentation einfügen. Deinen Code oben wie folgt ergänzen:

    Visual Basic-Quellcode

    1. Dim WsTabelle1 As Worksheet
    2. Dim LoTabelle1 As ListObject
    3. Set WsTabelle1 = ThisWorkbook.Sheets(1)
    4. Set LoTabelle1 = WsTabelle1.ListObjects("TabellenName")
    5. With pptSlide 'pptSlide entspricht Deiner Bezeichnung oben
    6. LoTabelle1.Range.CopyPicture
    7. .Shapes.PasteSpecial ppPasteMetalfilePicture
    8. .Shapes.Range(1).Align msoAlignBottoms.msoCTrue 'Range(?) entsprechend anpassen
    9. End with

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „cry.baby“ ()

    Hey vielen Dank cry.baby!

    Ich habe den Code eingefügt, jetzt sieht es insgesamt so aus:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub ChartObjectsNachPowerpoint()
    3. Dim pptApp As Object 'Die PowerPoint Anwendung
    4. Dim pptPres As Object 'Die PowerPoint Präsentation
    5. Dim chtObj As Object, shp As Object, i
    6. Dim pptSlide As Object
    7. Dim WsTabelle1 As Worksheet
    8. Dim LoTabelle1 As ListObject
    9. Set WsTabelle1 = ThisWorkbook.Sheets(1)
    10. Set LoTabelle1 = WsTabelle1.ListObjects("Tabelle1")
    11. Set pptApp = CreateObject("PowerPoint.Application") 'PowerPoint starten
    12. Set pptPres = pptApp.Presentations.Add(msoTrue) 'Neue Präsentation
    13. 'pptPres.ApplyTemplate "C:\Users\10542122\Documents\01. Meta\PowerPoint\Master\PowerPoint-Master-169-deutsch.potx"
    14. Set pptSlide = pptPres.Slides.Add(1, 12)
    15. For Each chtObj In ActiveSheet.ChartObjects 'Durch alle ChartObjekte gehen
    16. chtObj.Chart.ChartArea.Copy
    17. i = i + 1
    18. Set pptSlide = pptPres.Slides.Add(i, 12) 'Layout bestimmen (blank)
    19. With pptApp
    20. pptPres.PageSetup.SlideSize = 15 'Auf 16:9 umstellen
    21. End With
    22. Set shp = pptSlide.Shapes.Paste 'Das eingefügte Chart ausrichten
    23. shp.Top = 100
    24. shp.Left = 75
    25. shp.Width = 600
    26. shp.Height = 150
    27. With pptSlide 'pptSlide entspricht Deiner Bezeichnung oben
    28. LoTabelle1.Range.CopyPicture
    29. .Shapes.PasteSpecial ppPasteMetalfilePicture
    30. .Shapes.Range(1).Align msoAlignBottoms.msoCTrue 'Range(?) entsprechend anpassen
    31. End With
    32. Next
    33. pptApp.Visible = True
    34. End Sub


    Wenn ich den Code ausführen möchte sagt er mir leider "Variable nicht deklariert" und verweist auf ""ppPasteMetalfilePicture" (hier Zeile 40)
    Ich dachte vllcht ist da nur ein "l" zu viel bei "Metal" aber das hats nicht behoben...
    Es gibt nun übrigens eine Tabelle auf dem Worksheet namens "Tabelle1", also das passt schon


    Kann mir da jemand weiterhelfen? :/
    Update: ich seh gerade dass Du in Zeile 41 vor msoCTrue einen Punkt gesetzt hast -> hier gehört ein Komma hin. Außerdem heißt es Metafile - nicht Metalfile. Sorry, das habe ich beides oben falsch angegeben.

    Gib mal alternativ in Zeile 40 nach .Shapes.PasteSpecial DataType:= ein, dann bekommst Du über die Intellisense eine Auswahl aller möglichen Optionen. Versuch einfach was anderes aus...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „cry.baby“ ()

    *unnötiges Zitat entfernt*

    Wegen seinem Late Binding muss man der Methode eine Konstante zuweisen. Richtig? Man könnte aber auch einfach DataType:= 3 angeben, oder?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()