Post by Maglo » 25 Apr 2018, 07:39
Hey,
hab nun einiges probiert und bin mit meinem Skript fast fertig, allerdings fehlen noch ein paar Sachen:
Kurz was das Skript genau machen soll:
Also das komplette Skript soll zuerst ein bestimmtes Dokument öffnen und an das Ende einen Vermerk schreiben, dieses Dok 3x ausdrucken, speichern, schließen und verschieben
Dann ein bestimmtes Excel Register öffnen, nach einem Begriff suchen und in der Zeile neben dem gefundenen Suchbegriff dann bestimmte Daten eintragen und einen Wert kopieren, speichern und schließen.
Dann 2 weitere verschiedene Dok Formulare öffnen und dort in die Textmarken entsprechende Daten einfügen, die vorher in einer Maske angegeben wurden, diese beiden Formulare ausdrucken, nicht speichern und schließen.
Die Dokumente müssen nicht geöffnet werden (also sichtbar im Bildschirm) Wenn ich am Ende alles ausgedruckt in der Hand halte ist es perfekt.
Mein Entwurf:
SpoilerCode: Select all
#Singleinstance force
FormatTime, Heute, A_now, dd.MM.yyyy
Excel := ComObjActive("Excel.Application")
WorkBook := Excel.ActiveWorkbook
Sheet := Excel.ActiveSheet
oWord := ComObjCreate("Word.Application")
oDoc1 := oWord.Documents.Open("D:\Test\Abgabenachricht.docx")
oDoc2 := oWord.Documents.Open("D:\Test\Übersendung.docx")
Gui, Show, w1080 h720, ez alpha1
Gui, Add, Text, x252 y60 w100 h20 , Az
Gui, Add, Edit, x382 y60 w100 h20 vaz
Gui, Add, Text, x252 y90 w100 h20 , Wohin
Gui, Add, Edit, x382 y90 w100 h20 vwohin, PP
Gui, Add, Button, x252 y510 w100 h20 gaz, Go
return
az:
Gui Submit
oword.Documents.open("D:\Test\Test.docx")
oWord.Visible := 1, oWord.Activate
oWord.ActiveDocument.Characters.Last.Select
oWord.Selection.TypeText("xxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.Selection.TypeText("xxxxxxxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.Selection.TypeParagraph
oWord.Selection.TypeText("xxxxxxxxxxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.ActiveDocument.PrintOut( , , , , , , , Copies := 3)
oword.ActiveDocument.Save
oword.ActiveDocument.Close
;verschieben
FileMove G:\xxx\%az%.docx, G:\xxx\%az%.docx
sleep 500
;Register
Excel.Workbooks.open("D:\Test\2019.xls")
Adresse := Excel.Range("A:A").Find("Gs%az%").address
If Adresse
{
clipboard =
Excel.Range(Adresse).offset(0,3).value := "Ste"
Excel.Range(Adresse).offset(0,4).value := Heute
Excel.Range(Adresse).offset(0,5).copy
staaz := Clipboard
Excel.CutCopyMode := False
Excel.Range(Adresse).offset(0,10).value := "%wohin%"
}
Else
MsgBox, Suchbegriff nicht gefunden.
Excel.Workbook.save
Excel.Workbook.close
sleep 500
;Abgabe
oword.Documents.open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc1.Bookmarks("staaz").Select
oDoc1.Bookmarks("staaz").Range.Text := "staaz"
oDoc1.Bookmarks("az").Select
oDoc1.Bookmarks("az").Range.Text := "%az%"
oDoc1.Bookmarks("wohin").Select
oDoc1.Bookmarks("wohin").Range.Text := "%wohin%"
oword.ActiveDocument.PrintOut
oWord.ActiveDocument.Close(0)
sleep 1000
oword.Documents.open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc2.Bookmarks("wohin").Select
oDoc2.Bookmarks("wohin").Range.Text := "%wohin%"
oDoc2.Bookmarks("az").Select
oDoc2.Bookmarks("az").Range.Text := "%az%"
oword.ActiveDocument.PrintOut
oWord.ActiveDocument.Close(0)
oWord.Quit()
ExitApp
^!p::Pause
GuiClose:
ExitApp
return
Probleme:
Das Excel Register funktioniert nicht. Wenn er das Register öffnet und den Suchbegriff findet, dann soll er in den Zellen daneben die Wörter einsetzen und einmal kopieren. Er schreibt die Sachen allerdings in die 2. Zeile und nicht neben dem gefundenen Suchbegriff.
Bei den Bookmarks fügt er keine Variabeln ein. "%az%" wird als %az% wiedergegeben.
Ansonsten funktioniert alles.
Ich hab gestern 5 Stunden das alles versucht zu verstehen und zusammenzuschreiben, aber hab es nicht ganz geschafft.
Ich küsse dir die Füße Joe.
Hey,
hab nun einiges probiert und bin mit meinem Skript fast fertig, allerdings fehlen noch ein paar Sachen:
Kurz was das Skript genau machen soll:
Also das komplette Skript soll zuerst ein bestimmtes Dokument öffnen und an das Ende einen Vermerk schreiben, dieses Dok 3x ausdrucken, speichern, schließen und verschieben
Dann ein bestimmtes Excel Register öffnen, nach einem Begriff suchen und in der Zeile neben dem gefundenen Suchbegriff dann bestimmte Daten eintragen und einen Wert kopieren, speichern und schließen.
Dann 2 weitere verschiedene Dok Formulare öffnen und dort in die Textmarken entsprechende Daten einfügen, die vorher in einer Maske angegeben wurden, diese beiden Formulare ausdrucken, nicht speichern und schließen.
Die Dokumente müssen nicht geöffnet werden (also sichtbar im Bildschirm) Wenn ich am Ende alles ausgedruckt in der Hand halte ist es perfekt.
Mein Entwurf:
[spoiler][code]
#Singleinstance force
FormatTime, Heute, A_now, dd.MM.yyyy
Excel := ComObjActive("Excel.Application")
WorkBook := Excel.ActiveWorkbook
Sheet := Excel.ActiveSheet
oWord := ComObjCreate("Word.Application")
oDoc1 := oWord.Documents.Open("D:\Test\Abgabenachricht.docx")
oDoc2 := oWord.Documents.Open("D:\Test\Übersendung.docx")
Gui, Show, w1080 h720, ez alpha1
Gui, Add, Text, x252 y60 w100 h20 , Az
Gui, Add, Edit, x382 y60 w100 h20 vaz
Gui, Add, Text, x252 y90 w100 h20 , Wohin
Gui, Add, Edit, x382 y90 w100 h20 vwohin, PP
Gui, Add, Button, x252 y510 w100 h20 gaz, Go
return
az:
Gui Submit
oword.Documents.open("D:\Test\Test.docx")
oWord.Visible := 1, oWord.Activate
oWord.ActiveDocument.Characters.Last.Select
oWord.Selection.TypeText("xxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.Selection.TypeText("xxxxxxxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.Selection.TypeParagraph
oWord.Selection.TypeText("xxxxxxxxxxxxxxxxxxx")
oWord.Selection.TypeParagraph
oWord.ActiveDocument.PrintOut( , , , , , , , Copies := 3)
oword.ActiveDocument.Save
oword.ActiveDocument.Close
;verschieben
FileMove G:\xxx\%az%.docx, G:\xxx\%az%.docx
sleep 500
;Register
Excel.Workbooks.open("D:\Test\2019.xls")
Adresse := Excel.Range("A:A").Find("Gs%az%").address
If Adresse
{
clipboard =
Excel.Range(Adresse).offset(0,3).value := "Ste"
Excel.Range(Adresse).offset(0,4).value := Heute
Excel.Range(Adresse).offset(0,5).copy
staaz := Clipboard
Excel.CutCopyMode := False
Excel.Range(Adresse).offset(0,10).value := "%wohin%"
}
Else
MsgBox, Suchbegriff nicht gefunden.
Excel.Workbook.save
Excel.Workbook.close
sleep 500
;Abgabe
oword.Documents.open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc1.Bookmarks("staaz").Select
oDoc1.Bookmarks("staaz").Range.Text := "staaz"
oDoc1.Bookmarks("az").Select
oDoc1.Bookmarks("az").Range.Text := "%az%"
oDoc1.Bookmarks("wohin").Select
oDoc1.Bookmarks("wohin").Range.Text := "%wohin%"
oword.ActiveDocument.PrintOut
oWord.ActiveDocument.Close(0)
sleep 1000
oword.Documents.open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc2.Bookmarks("wohin").Select
oDoc2.Bookmarks("wohin").Range.Text := "%wohin%"
oDoc2.Bookmarks("az").Select
oDoc2.Bookmarks("az").Range.Text := "%az%"
oword.ActiveDocument.PrintOut
oWord.ActiveDocument.Close(0)
oWord.Quit()
ExitApp
^!p::Pause
GuiClose:
ExitApp
return[/code][/spoiler]
Probleme:
Das Excel Register funktioniert nicht. Wenn er das Register öffnet und den Suchbegriff findet, dann soll er in den Zellen daneben die Wörter einsetzen und einmal kopieren. Er schreibt die Sachen allerdings in die 2. Zeile und nicht neben dem gefundenen Suchbegriff.
Bei den Bookmarks fügt er keine Variabeln ein. "%az%" wird als %az% wiedergegeben.
Ansonsten funktioniert alles.
Ich hab gestern 5 Stunden das alles versucht zu verstehen und zusammenzuschreiben, aber hab es nicht ganz geschafft.
Ich küsse dir die Füße Joe.