Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Davidoff99 am März 15, 2018, 12:42:22 Nachmittag
-
Hallo Forums mitglieder,
aus einem Excel soll automatisiert eine PowerPoint mit vorgegebenen Template generiert werden.
Da die Anwender unterschiedliche Excel Versionen nutzen, kann die Reference nicht verwendet werden (late Binding).
Mein Makro erstellt aus einer im Excel hinterlegten PowerPoint Vorlage eine neue PowerPoint und soll die Daten aus Excel in bestimmte Shapes übertragen.
Mein Code:
'** Alles auf Public da dies Variablen über mehre Module aufrufbar sein sollen
Sub CreatePPT
Public Pfad As String
Public strFilename As String
Public rngRange As Range
Public ppApp As Object
Public ppPres As Object
'** Erstelle PowerPoint
If Err.Number <> 0 Then
Set ppApp = CreateObject("PowerPoint.Application")
PowerPoint.Application.WindowState = ppWindowStateMinimize
PowerPoint.Application.WindowState = ppWindowStateMinimize
End If
Worksheets("VERSION").Visible = xlSheetVisible
Worksheets("VERSION").Select
Worksheets("VERSION").OLEObjects("PPTTemplate").Verb Verb:=xlVerbAdd
Set ppPres = ActiveSheet.OLEObjects("PPTTemplate")
Set ppPres = GetObject(, "PowerPoint.Application")
Set rngRange1 = Worksheets("CUSTOMER INFO").Range("Company")
Set rngRange2 = Worksheets("CUSTOMER INFO").Range("SFDC_SR")
Pfad = Worksheets("CUSTOMER INFO").Range("File_Location")
strFilename = rngRange1.value & "_" & rngRange2.value
'** hier soll auf Slide 1 der PPT die Shapes mit den Informationen aus Excel gefüllt werden.
ppPres.Slides(1).Select
ppPres.Slides(1).Shapes("Title 1").TextFrame.TextRange.Characters.Text = Worksheets("CUSTOMER INFO").Range("Title").value
ppPres.Slides(1).Shapes("Subtitle 2").TextFrame.TextRange.Characters.Text = Worksheets("CUSTOMER INFO").Range("Company").value
ppPres.Slides(1).Shapes("Costumer_Adress").TextFrame.TextRange.Characters.Text = Worksheets("CUSTOMER INFO").Range("Costumer_Adress").value
End Sub
Allerdings bekomme ich folgende Fehlermeldung:
Run-Time error `438`: Object doesn´t support this property or method
und das Makro bleibt in der Zeile ppPres.Slides(1).Select stehen.
Wenn ich die Reference nutze, funktioniert das Script einwandfrei...
Hat einer eine Idee wo mein Fehler liegt?
Danke im Voraus.
-
Hallo,
ungetestet, aber Du könntest mal versuchen, die Zeile einfach wegzulassen. Select braucht man normalerweise nicht. Ansonsten verbliebe
den Code in PPT selbst zu testen und auch in der entsprechenden Version (falls Du 2 PPT bei Dir hast).
Gruß
-
Moin,
der Aufruf funktioniert nicht, da ppPres kein Presentation-Object ist, siehe Set ppPres = GetObject(, "PowerPoint.Application"), sondern eben ein Application-Object (für Powerpoint).
Daher wäre z.B. ppPres.Presentations(1).slides(1).shapes... richtig, um die Shapes zu adressieren.
Besser wäre es jedoch, direkt Dein ppApp-Objekt zu nutzen und ppPres richtig zuzuweisen mit Set ppPres = ppApp.Activepresentation beispielsweise.
Wenn du die Nase von VBA voll haben solltest, empfehle ich Dir ansonsten einen Automatisierungsweg ohne VBA-Coding via https://slidefab.com (https://slidefab.com)
HG
Jens