Makro Code um auf PPT zuzugreifen
Pascal
Dank der grandiösen Hilfe hier aus diesem Forum hab ich folgenden Code erhalten um auf meine im Hintergrund geöffnete PPT Datei (nicht Präsentations-Modus)
zuzugreifen:
Public Sub GetAllText()
Dim powerPointSlide As Object
Dim slideShape As Object
Dim tempArray As Variant
Dim i As Integer
Dim Titel As String
Dim Titel2 As String
Dim titel3 As String
Dim Titel4 As String
'Schleifen über alle Folien in der aktuellen PPT
For Each powerPointSlide In powerPointPresentation.Slides 'Schleife über alle Slides
For Each slideShape In powerPointSlide.Shapes ''Schleife über alle Shapes in der Slide
Titel = powerPointApplication.ActivePresentation.Name
Titel2 = powerPointApplication.ActiveWindow.View.Slide.Name
tempArray = Split(slideShape.TextFrame.TextRange.Text, "*") 'Text aufteilen nach *
For i = LBound(tempArray) To UBound(tempArray)
If Left(tempArray(i), 1) = "#" Then 'Aufteilungen überprüfen ob 1tes Zeichen ein #
AddText newText:=tempArray(i)
End If
Next i
Titel5 = slideShape.TextFrame.TextRange.Text
Titel4 = powerPointSlide.Name
titel3 = slideShape.Name
Next slideShape
Next powerPointSlide
End Sub
Dieser Code macht folgendes:
In der im Hintergrund offenen PPT Datei (nicht im Präsentationsmodus) werden alle Zeilen, geholt, welche zwischen den Zeichen #* (=Start) und * (=Ende) liegen.
Und dies natürlich über alle Folien in der PPT Datei.
Sinn und Zweck dieses Makro's ist es, speziell markierte Texte aus dem PPT ins Excel in eine Tabelle zu übertragen.
Im obigen Code hab ich mal testhalber schon versucht weitere Texte, Namen, etc aus der PPT zu ermitteln und in Testvariablen zu schreiben. Daher die Variablen Titel3, Titel4 etc..)
D.h. ich lade die entsprechenden Texte zuerst auf eine UserForm in verschiedene Textfelder um sie dem User zu zeigen.
Anschliessend werden diese ins Excel in eine Tabelle kopiert.
Siehe dazu beiligende Dateien. Zuerst das PPT öffnen, anschliessend das Excel öffnen und dort drin die Userform starten
https://www.herber.de/bbs/user/79583.ppt
https://www.herber.de/bbs/user/79584.xlsm
Nun mein eigentliches Problem oder meine eigentliche Frage:
Ich möchte den Code so ergänzen, dass er mir in einem Textfeld auf der UserForm den Text der allerersten Folie der Präsentation anzeigt.
Zudem sollte bei jedem Text der ab der Präsentation geholt (und dann kopiert wird) gleich auch noch die dazugehörende Folien-Nummer (oder Seite)
in einem separaten Textfeld angezeigt werden.
Die Seitennummer (oder Foliennummer) kriegte ich schon mal mit dieser Zeile hier hin:
Me.TextBox2.Text = powerPointApplication.ActiveWindow.View.Slide.Name
Problem ist nur, dass diese Zeile bloss nur immer die erste Folie ausgibt. (d.h. ich müsste die irgendwie noch in die Schlaufe einbinden, welche über alle Folien läuft.
(also so, dass nicht nur die erste Seite, sondern auch die Folgeseiten ausgegeben werden.)
Leider aber hab ich das bisher nicht hingekriegt. Mein PPT VBA Wissen reicht da offenbar nicht aus.
Wär wirklich Sausuper-Nett, wenn mir jemand hier etwas weiterhelfen könnte.
Im voraus ein riesiges Dankeschööön !