Hi all,
ich baue gerade an einer Automatisierung unterschiedlicher Buildroutinen für ein Projekt, dass aus einigen PPT-Präsentationen besteht.
Aufgabe 1
Setzen von Fusszeileninformationen
Und schon gescheitert.
In einem Script öffne ich die Präsentation, öffne den Dialog [Kopf- und Fusszeile], setze manuelle Texte und schliesse den Dialog mit {Für alle übernehmen}.
Den Dialog habe ich mal angehängt.
Der Queltext
[autoit]Global $PresentationName
[/autoit][autoit][/autoit][autoit];---- Öffnen einer Präsentation - Default = slides.pptx ----
Func OpenPPT($name = "slides")
$PresentationName = $name & ".pptx"
ShellExecute($PresentationName)
WinWaitActive("Microsoft PowerPoint")
EndFunc ;==>OpenPPT
;---- setzt Fußzeile der Folien ----
Func SetFooterPPT($versiontext, $versiondate)
Opt("sendKeyDelay", 50)
Send("!I!P")
WinWaitActive("Kopf- und Fußzeile") ;Dialog "Kopf- und Fußzeile" öffnen
;----- Manuelles Datum in Fußzeile -----
ControlCommand("Kopf- und Fußzeile", "", "Button2", "Check") ;Datum einfügen
Send("!S^A") ;manuelles Datum aktivieren und altes Datum markieren
ControlSend("Kopf- und Fußzeile", "", 104, $versiondate)
;----- Foliennummer in Fußzeile -----
ControlCommand("Kopf- und Fußzeile", "", "Button5", "Check") ;Foliennummer anzeigen
;----- Versionstext als Fußzeile -----
Send("!F")
ControlCommand("Kopf- und Fußzeile", "", "Button6", "Check") ;Versionstext einfügen
Send("^A") ;Versionstext markieren
ControlSend("Kopf- und Fußzeile", "", 107, $versiontext)
ControlCommand("Kopf- und Fußzeile", "", "Button7", "UnCheck") ;auch auf erster Folien anzeigen
Send("!A") ;für alle Folien übernehmen
WinWaitActive("Microsoft PowerPoint - [" & $PresentationName & "]")
[/autoit][autoit][/autoit][autoit];Variante 1
;Send("^S") ;STRG-S
;Variante 2
;Sleep(5000)
Send("!D!S");Office-Symbol + ALT-S
Opt("sendKeyDelay", "Default")
EndFunc ;==>SetFooterPPT
OpenPPT()
SetFooterPPT("1.05","28.08.2011")
Nach dem Setzen möchte ich den Dialog speichern. Dazu fallen mir zunächst die Varianten
1. STRG-S
2. über das Office-Symbol ALT-D + ALT-S
Bei Variante 1 passiert scheinbar nix - in jedem Fall wird nicht gespeichert.
Bei Variante 2 öffnet sich der Dialog [Kopf- Fußzeile]?????
Ich hab es mit unterschiedlichen Pausen versucht aber bekomme immer die gleiche Reaktion.
Zwei Fragen:
a) warum erscheint der Dialog [Kopf- Fusszeile] bei ALT-D + ALT-S ???
b) wie kann ich die Präsentation sicher zwischenspreichern?
-----------------------------------------------------------------------------------------------
Nachtrag:
Gerade versuche ich Aufgabe 2 zu lösen - Druck in eine PDF.
Dazu versuche ich mit ALT-D das Officemenü zu öffnen. Das funktioniert auch einige male. Aber plötzlich und unerwartet erscheint statt dem Office-Menü der Dialog [Kopf- Fußzeile]????. Das ändert sich erst wieder nach einem Reboot des Rechners. Dann erscheint zunächst einige male das Office-Menü, bis irgendwann wieder [Kopf- und Fußzeile] erscheint. Dabei habe ich den Dialog [Kopf- und Fußzeile] nach dem Boot NICHT aufgerufen!!
[autoit]Global $PresentationName
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Func GenPDF_PPT()
Opt("sendKeyDelay", 25)
WinWaitActive("Microsoft PowerPoint - [" & $PresentationName & ".pptx]")
ControlSend("Microsoft PowerPoint - [" & $PresentationName & ".pptx]","","[CLASS:paneClassDC; INSTANCE:2]","!D")
Send("!D")
;Hier erscheint x mal das Office-Menü. Irgendwann erscheint der Dialog [Kopf- Fußzeile]
WinWaitActive("Drucken")
ControlCommand("Drucken", "", "REComboBox20W4", "SelectString", "Adobe")
Send("!A") ;Alles drucken
[/autoit][autoit][/autoit][autoit]ControlCommand("Drucken", "", "REComboBox20W1", "SelectString", "Folien") ;Folien Drucken
ControlCommand("Drucken", "", "REComboBox20W3", "SelectString", "Farbe") ; in Farbe
ControlClick("Drucken", "", "Button13")
WinWaitActive("PDF-Datei speichern unter")
ControlSend("PDF-Datei speichern unter", "", "Edit1", "^A")
ControlSend("PDF-Datei speichern unter", "", "Edit1", @WorkingDir & $PresentationName & ".PDF")
Opt("sendKeyDelay", "Default")
EndFunc
;---- Öffnen einer Präsentation - Default = slides.pptx ----
Func OpenPPT($name = "slides")
$PresentationName = $name
ShellExecute($PresentationName & ".pptx")
WinWaitActive("Microsoft PowerPoint")
EndFunc ;==>OpenPPT
OpenPPT()
GenPDF_PPT()
Gruss
RaBe