Hallo gregster!
Jetzt funktioniert das Script eigentlich ganz gut, lediglich mit der Einschränkung, daß beim ersten Durchlauf nach dem Start wieder die Fehlermeldung kommt und das Bild nicht aufgerufen wird. Aber korrekt erstellt wird es jetzt.
Ich habe ganz am Ende auch noch
FileDelete eingefügt, so wird der Word-Entwurf dann gleich wieder gelöscht, nachdem er seine Pflicht erfüllt hat.
Das ganze Script für dieses Modul sieht jetzt folgendermaßen aus (dann könnt Ihr auch mal den Zusammenhang besser erkennen):
Code: Select all
; Virtuelles Deckblatt erstellen:
F11::
VirtuellesDeckblatt:
If (AktSign = "")
{
MsgBox, 17, Keine Bestandsvorlage!, Sie müssen zuerst eine Bestandsvorlage auswählen!
IfMsgBox Ok
{
Gosub Auswahlfenster
return
}
else
return
}
Clipboard := ""
VD_IBoxText =
(
Ein vituelles Deckblatt zum
Bestand %AktSign% wird erstellt.
Geben Sie die Aktensignatur ein!
)
InputBox, VD_SignBox, Virtuelles Deckblatt, %VD_IBoxText%, ,240, 185,
If ErrorLevel
return
else
id_Arbeitsfenster := WinExist("A")
VD_SignNeu := VD_SignBox
;VD_AktSign := AktSign
VD_AktSign := StrReplace(AktSign, "--", "/")
;MsgBox %VD_AktSign%
DocumentPath := VD_Vorlage
BookmarkName1 := "AktSign_Marke"
BookmarkName2 := "Signatur_Marke"
oWord := ComObjCreate("Word.Application")
oDoc := oWord.Documents.Open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc.Bookmarks(BookmarkName1).Select
oDoc.Bookmarks(BookmarkName1).Range.Text := VD_AktSign
Send, {Left}{Del}
oDoc.Bookmarks(BookmarkName2).Select
oDoc.Bookmarks(BookmarkName2).Range.Text := VD_SignNeu
Send, {Left}{Del}
Send, {PGUP}
Send, ^a
Send, ^c
VD_SignName := Format("{:0" . StellenSign . "}", VD_SignNeu)
VD_NameNeu := AktSign . "_" . VD_SignName
;MsgBox, %VD_NameNeu%
oWord.ActiveDocument.SaveAs(A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\" . VD_NameNeu . ".docx")
;oWord.ActiveDocument.SaveAs(A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\VD_docDateien\" . VD_NameNeu . ".docx")
;oWord.ActiveDocument.SaveAs("id_ArbeitsFenster" . VD_NameNeu . ".docx")
RegRead, I_view_exe, HKCR\Applications\i_view32.exe\shell\open\command
IF !(I_view_exe)
{
RegRead, I_view_exe, HKCR\Applications\i_view64.exe\shell\open\command
RegexMatch(I_view_exe, "(?P<>""[^""]*"")", I_view_exe) ;erste "..."-Gruppe
}
IF !(I_view_exe)
{
MsgBox, Bitte IrfanView Installieren.
Return
}
oWord := ComObjActive("Word.Application")
oRange := oWord.ActiveDocument.Range.Copy
Run, %I_view_exe% /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
oWord.ActiveDocument.Close(0)
oWord.Quit()
FileDelete, %Arbeitsdateien%\%VD_NameNeu%.docx
Run %Arbeitsdateien%\%VD_NameNeu%.jpg
return
Dabei ist das "Auswahlfenster" eine
Gui zum Auswählen extern gespeicherter Vorgaben, die auch dann die Vaiable füllen, die in das eine Textfeld geschrieben wird. Die für das andere Textfeld wird über die
InputBox eingegeben. Kann man dort eigentlich einen dritten Button hereinsetzen? Bei einer MsgBox ist das möglich, wenn man in den Parametern die Optionen entsprechend verändert.
Was ebenfalls immernoch wünschenswert wäre, ist die Abspeicherung der neue erstellten Bilddatei im aktuell geöffneten Explorerfenster bzw. Dateienordner.
Viele Grüße von Meister Lampe