pptx mit Makro ansprechen

Moderator: ModerationP

pptx mit Makro ansprechen

Beitragvon Steini666 » 21. Mär 2019, 12:15

Hallo liebe Powerpointer,

ich versuche mich seit gestern mit Visual Basic Powerpoint.... in Excel klappt ja das meiste das ich mache, aber bei pptx/pptm hab ich echt meine Probleme.

Also ich muss an die 50 Schulungen von einer alten Dateivorlage in eine neue ("viel Bessere") #SarkasmusOff Vorlage bringen.

Nun ist mein plan folgender

Ich öffne beide Präsentationen wähle zuerst die neue Vorlage aus und lösche 2 der vorhanden ("leeren") Textboxen.

Dies funktioniert auch schon mal ganz gut!

Danach möchte ich die 2. Folie aus meiner alten Dateivorlage (welche bereits geöffnet ist [manuell] auswählen und die Textboxen 1 und 2 kopieren und danach auf der neuen Vorlage einfügen.
Jedoch aktiviert er immer wieder die "NameUrDatei" und nicht die "NameDat1" so wie eigentlich im code geschrieben.

Kann mir hier bitte wer helfen.

PS: Mit Vorlage ist hier nur eine PPTX gemeint welche Masterfolien definiert hat.
Anpassen der alten Masterfolie auf den Standard der neuen Funktioniert nicht da es mir die Änderungen nicht übernimmt bzw. sich auch das Format gesamt geändert hat.

Hoffe jemand kann mir bald helfen bevor ich alles Händisch kopieren muss.

LG Steini




Code: Alles auswählen
Sub kopierenEinfuegen()

Dim Folie As Slide
Dim Textbox As Shape
Dim NameUrDatei As String
Dim NameDat1 As String


NameDat1 = "Schulungsunterlage TIG Q-Modul.pptx"

NameUrDatei = ActivePresentation.name

'Application.
Presentations(NameUrDatei).Slides(4).Select


Application.ActivePresentation.Slides(2).Shapes(1).Delete
Application.ActivePresentation.Slides(2).Shapes(1).Delete
'
'
'

Presentations(NameDat1).Slides(4).Select



End Sub
Steini666
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 44
Registriert: 11. Dez 2017, 17:41

Re: pptx mit Makro ansprechen

Beitragvon DerHoepp » 26. Mär 2019, 10:09

Hallo Steini,

genau wie bei Excel ist es auch in Powerpoint meistens Unsinn zu Selektieren oder Aktivieren. Nutze einfach Objektvariablen, mit Hilfe derer du dich direkt auf deine benötigten Objekte beziehst (ungetestet):
Code: Alles auswählen
Sub Test()
   Dim QuellPresentation As Presentation
   Dim ZielPresentation As Presentation

   Set QuellPresentation = ActivePresentation
   Set ZielPresentation = Presentations.Open("C:\Daten\Beispielfile.pptx")

   QuellPresentation.Slides(1).Shapes(3).Copy
   ZielPresentation.Slides(2).Paste
End Sub


Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8777
Registriert: 14. Mai 2013, 11:08

Re: pptx mit Makro ansprechen

Beitragvon Steini666 » 17. Apr 2019, 11:43

Hallo DER HOEPP :-)

Sorry für die verspätete Antwort.
Leider ändern sich täglich meine Prios. Was heute Überlebens wichtig ist wird morgen nicht mehr gebraucht.

Hab den Code nun veruscht bzw. ähnlich aufgebaut.
Code: Alles auswählen
Sub test()
Dim Zieldatei As Presentation
Dim Ausgangsdatei As Presentation
Dim x As Byte
Dim anzFolie As Long
Dim Z As Long
Dim y As Byte
Dim pptSlide As Slide
Dim pptLayout As CustomLayout
 




Set Zieldatei = Presentations(1) ' auf die Zieldatei referenzieren
Set Ausgangsdatei = Presentations(2) ' auf die ausgangsdatei refernzieren


anzFolie = Ausgangsdatei.Slides.Count

For y = 2 To anzFolie

    Zieldatei.Slides(y).Shapes(1).Delete
    Zieldatei.Slides(y).Shapes(1).Delete
   
    x = Presentations(2).Slides(y).Shapes.Count

            For Z = 1 To x
            Ausgangsdatei.Slides(y).Shapes(Z).Copy ' daten aus der alten vorlage kopieren
           
            Zieldatei.Slides(y).Shapes.Paste ' daten in der neuen Vorlage einfügen
           
            Next Z
           
   
 
    Set pptLayout = Zieldatei.Slides(2).CustomLayout
    Set pptSlide = Zieldatei.Slides.AddSlide(y + 1, pptLayout)






Next y


End Sub


Lustig an den ganzen Spaß ist dass sich das Programm im Automatik (play) modus aufhängt wenn ich aber mit F8 durchstepe läuft es ohne Probleme.
Ich dreh noch durch....

Muss bis Juni gefühlt 500 Präsentationen in ein neue Vorlage bringen.

Vl hat noch wer eine Idee dazu bitte
Steini666
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 44
Registriert: 11. Dez 2017, 17:41

Re: pptx mit Makro ansprechen

Beitragvon Fen » 17. Apr 2019, 12:12

Hallo,

ist es möglich ein Beispiel für das alte und neue Format zu zeigen? Die Texte können "lore ipsum" sein, aber die Länge und das Format der Texte sollte stimmen. Auch Elemente die nicht im Layout-Master vorhanden sind, sollte vorhanden sein.

mfg
Fen
 

Re: pptx mit Makro ansprechen

Beitragvon Steini666 » 18. Apr 2019, 09:49

Hallo leider ist der Upload von Datein 1. von unserer Firma verboten und es ist gesperrt.
Ich kann leider keine Anhänge hochladen.

LG
Steini666
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 44
Registriert: 11. Dez 2017, 17:41

Re: pptx mit Makro ansprechen

Beitragvon Steini666 » 29. Apr 2019, 08:37

Hallooooooo VBAler :-)

ich könnte das Problem lösen!

Es lag daran dass der Code einfach zu schnell war.

Hab nun eine Millisek. sleep eingebaut und nun läuft er!

Ober dem SUB einfach folgenden code einfügen

Code: Alles auswählen
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


danach die normale SUB

Code: Alles auswählen
  For Z = 1 To x
            Ausgangsdatei.Slides(y).Shapes(Z).Copy ' daten aus der alten vorlage kopieren
           
            Sleep (1)
           
            Zieldatei.Slides(y).Shapes.Paste   ' daten in der neuen Vorlage einfügen
           
           


Mit Sleep(x) wird die dauer der Unterbrechung in Millisekunden angegeben, bei mir reicht eine aus.
Steini666
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 44
Registriert: 11. Dez 2017, 17:41


Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste