Excel aus Power Point befüllen ( Folientitel je Folie in eigene Zelle schreiben)

  • PowerPoint

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

    Excel aus Power Point befüllen ( Folientitel je Folie in eigene Zelle schreiben)

    Hallo, ich hoffe es kann mir jemand weiterhelfen, ich finde dazu keine hilfreichen Tipps im Internet, ich finde ähnliche Problematik habe aber keines davon auf meine Aufgabenstellung ummünzen können.
    Meine Aufgabenstellung die ich zu lösen habe ist folgende: Ich soll eine Powerpoint Präsentation erstellen mit beliebig vielen Folien (6 Folien habe ich erstellt) und mittels VBA soll ich aus Power Point Excel öffnen und der Titel jeder Folie soll in einer eigenen Zelle stehen. Ich schaffe es Excel zu öffnen eine Arbeitsmappe anzulegen und die active cell auszuwählen - ich kann diese auch beliebig über PPT beschreiben aber schaffe es eben nicht automatisch die Folientiteln in die Zellen zu schreiben.

    So sieht mein VBA Code derzeit aus:

    Visual Basic-Quellcode

    1. Sub VBA_Integration
    2. Dim ppt As Presentation
    3. Dim Folie As Object 'variable für jede Folie in der Präsentation'
    4. Dim app As Excel.Application 'variable für Excel Anwendung definieren
    5. Dim ws As Worksheet
    6. Dim wb As Workbook
    7. Set app = CreateObject("Excel.Application") 'Excel starten
    8. app.Visible = True 'Excel sichtbar machen
    9. Workbooks.Add
    10. Set wb = ActiveWorkbook
    11. For Each Folie In ActivePresentation.Slides
    12. If Folie.IsLoaded = True Then
    13. ws = ppt.Name
    14. End If
    15. Next Folie
    16. ActiveCell = A1
    17. ActiveCell.FormulaR1C1 = "Beispieltext"
    18. End Sub

    Aussehen sollte das Excel aus Endergebnis so, dass in Zelle A1: Folie1 steht, A2: Folie2 usw.... je nachdem wie viele Folien in PPT angelegt sind und wie diese heißen.

    Bin sehr gespannt ob mir jemand weiterhelfen kann :)

    Vielen Dank

    LG Thomas

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    ThoVBABeginner schrieb:

    Set wb = ActiveWorkbook
    For Each Folie In ActivePresentation.Slides
    If Folie.IsLoaded = True Then
    ws = ppt.Name
    End If
    Next Folie

    Visual Basic-Quellcode

    1. ​Set wb = ActiveWorkbook
    2. Set ws = wb.Sheets(1)
    3. Dim r As Long
    4. For Each Folie In ActivePresentation.Slides
    5. If Folie.IsLoaded Then
    6. r=r+1
    7. ws.Cells(r,1).Value = Folie.Name
    8. End If
    9. Next Folie
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Danke,

    so hats funktioniert im Endeffekt:

    Visual Basic-Quellcode

    1. Sub ()
    2. Dim ppt As Presentation
    3. Dim Folie As Object 'variable für jede Folie in der Präsentation'
    4. Dim app As Excel.Application 'variable für Excel Anwendung definieren
    5. Dim ws As Worksheet
    6. Dim wb As Workbook
    7. Set app = CreateObject("Excel.Application") 'Excel starten
    8. app.Visible = True 'Excel sichtbar machen
    9. Workbooks.Add
    10. Set wb = ActiveWorkbook
    11. ActiveCell.Range("A1").Select
    12. For Each ppapp In ActivePresentation.Slides
    13. If ppapp.Shapes.HasTitle = True Then
    14. ppTitel = ppapp.Shapes.Title.TextFrame.TextRange
    15. ActiveCell.FormulaR1C1 = ppTitel
    16. ActiveCell.Offset(1, 0).Select
    17. End If
    18. Next
    19. Set app = Nothing
    20. End Sub


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    ThoVBABeginner schrieb:

    ActiveCell.Range("A1").Select
    ...
    ActiveCell.FormulaR1C1 = ppTitel
    ActiveCell.Offset(1, 0).Select
    Ja, das funktioniert so lange kein Benutzer während des Programmablaufs im Sheet rum klickt oder gar die Tabelle wechselt.
    Sicherer ist die direkte Adressierung ohne die Verwendung von ActiveCell und Select.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --