eigentlich muss du nur anstelle von $txt_Edit = GUICtrlRead($Edit) deinen Teil $text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]") einsetzen ...
hab grad keine zeit, sonsdt würde ich mir das nochmal ansehen...
eigentlich muss du nur anstelle von $txt_Edit = GUICtrlRead($Edit) deinen Teil $text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]") einsetzen ...
hab grad keine zeit, sonsdt würde ich mir das nochmal ansehen...
Ich würde das über die GUI machen.
Einen Lese Button und einen für Speichern. (siehe Anhang)
Du möchtest ja sicher auch noch eine Fehlerbehandlung mit einbauen.
Ist aber noch nicht kommplett umgesetzt ...
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <Word.au3>
#NoTrayIcon
; activate part match mode of title
AutoItSetOption("WinTitleMatchMode",2)
$AutoIT = GUICreate("", 200, 150)
$Read = GUICtrlCreateButton("Lesen", 50, 20, 100, 25)
GUICtrlCreateLabel("Bitte Nummer eingeben!",20, 60, 150, 25)
$Number = GUICtrlCreateInput("", 20, 80, 150, 25)
$Save = GUICtrlCreateButton("Speichern", 50, 120, 100, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Read
$text = ""
_get_Text()
Case $Save
;$txt_Edit = GUICtrlRead($Edit)
;$txt_Filename = GUICtrlRead($Filename)
$nummer = ""
While 1
$nummer = InputBox("Info","Bitte Nummer + Name eingeben:", "")
If @error = 1 Then
MsgBox(0,"Achtung","speichern abgebrochen")
ExitLoop
Else
If $nummer <> "" Then
_Save_to_Word()
ExitLoop
Else
MsgBox(0,"Achtung","darf nicht leer sein")
EndIf
EndIf
WEnd
EndSwitch
WEnd
Func _Save_to_Word()
$oWord = _Word_Create(1)
$oDoc = _Word_DocAdd($oWord)
$oWord.Selection.TypeText ($text)
;_Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12) ; save as docx")
;_Word_DocSaveAs($oDoc, "S:\ARCHIV\Mittelvergabe\Memos\" & $nummer) ; save as doc")
;_Word_Quit($oWord)
EndFunc
Func _get_Text()
; Titel of Window
$wintitle = "Stiftungsanträge / Einzelfallhilfen"
; activate window
WinActivate($wintitle)
; wait max 10 seconds for window to become active
If WinWaitActive($wintitle,"",5) = 0 then
Msgbox(16,"Timeout","Konnte Fenster nicht finden!")
Exit 1
EndIf
; retrieve text of control
$text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]")
EndFunc
Alles anzeigen
Gruß gmmg
Danke Dir... sieht gut aus.
Habe im Moment eine Lösung, die (fast) auch funktioniert.
Der Text wird ausgelesen und in ein Word-Dokument kopiert.
Dann öffnet sich der "speichern-unter"-Dialog... aber es wird nicht das von mir angegebene Verzeichnis geöffnet (S:\Archiv\Mittelvergabe\Memos).
Und das Eingabefeld für den Dateinamen ist auch nicht leer...
Hier der Code:
#NoTrayIcon
; activate part match mode of title
AutoItSetOption("WinTitleMatchMode",2)
; Titel of Window
$wintitle = "Stiftungsanträge / Einzelfallhilfen"
; activate window
WinActivate($wintitle)
; wait max 10 seconds for window to become active
if WinWaitActive($wintitle,"",5) = 0 then
msgbox(16,"Timeout","Konnte Fenster nicht finden!")
exit 1
EndIf
; retrieve text of control
$text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]")
; Word starten
$objWord = ObjCreate("Word.Application")
; leeres Dokument hinzufügen
$doc = $objWord.Documents.Add()
; make word visible
$objWord.Visible = true
; insert text into document
$doc.Content.Text = $text
; Save document
$objWord.SaveAs("S:\ARCHIV\Mittelvergabe\Memos\" & ".doc")
; close document
$doc.Close()
; close word
$objWord.Quit()
Alles anzeigen
Aber ich versuche zunächst mal Dein Script... bin gespannt
P.S.:
Habe jetzt das Script mal getestet, aber verstehe den Ablauf nicht so recht.
Wenn ich auf "Lesen" klicke, weiß ich nicht so recht, was passiert. Dann werde ich 2 x nach der Nummer gefragt und daher irritiert mich das.
Wenn in meinem Script die beiden oben beschriebenen Problemchen noch gelöst werden (Speicherndialog im richtigen Verzeichnis und Dateinamenfeld leer), dann funktioniert alles gut!
LG
imebro
Wenn du in meinen Script auf lesen klickst, wird der Text des Elementes [CLASS:TwwDBRichEdit; INSTANCE:1]") ausgelesen.
1. Grundsätzlich müsstest du uns mal noch sagen, ob sich das Programm wie in deinem SScript bei jedem aufruf wieder beenden soll oder die GUI, wie in meinem Script offen bleibt.
Dafür ist die While 1 - Wend Schleife vorhanden. In dieser Steuert man nun die Switch Case Abfragen.
Wenn man nun z.B. den Speichern Button drückt, wird der Quellcode bei Case $Save ausgeführt.
Drückt man den Lesen Button, wird der Quelltext von Case $Read ausgeführt, das ist in dem Fall, dass die Variable $text geleert wird und es wird die Funktion zum auslesen des Textes deiner Stiftungsanträge / Einzelfallhilfen ausgeführt.
Das mal zum Verständnis ...
Gruß gmmg
Hallo nochmal und danke für die Erklärung.
Ich beschreibe jetzt mal Schritt für Schritt, was passiert, wenn ich Deinen Code ausführe:
1) Klick auf lesen --> Die GUI wird in die Taskleiste minimiert (ob der Text aus dem Programm-Textfenster eingelesen wurde, weiß ich zu diesem Zeitpunkt noch nicht)
2) Ich klicke die GUI in der Taskleiste an, damit sie wieder nach vorne kommt und gebe die Nummer ins Feld "Bitte Nummer eingeben!" ein
--> Es öffnet sich ein weiteres Fenster mit dem Titel "Info". Darin steht "Bitte Nummer + Name eingeben".
Darunter befindet sich ein Textfeld. Darunter ein Button "OK" und ein Button "Cancel".
3) Ich gebe nun auch dort nochmals die Nummer ein und klicke auf OK.
4) Nun öffnet sich ein neues Word-Dokument und der eingelesene Text wird eingefügt.
Das zweite Fenster "Info", wo ich zum 2. Mal die Nummer eingetragen hatte, hat sich geschlossen.
Das erste Fenster (GUI), mit Lesen und Speichern Button, ist noch sichtbar.
5) Ich klicke im GUI-Fenster nun auf "Speichern" (die zuvor eingetragene Nummer steht dort noch drin)
6) Es erscheint wieder das zweite Fenster mit dem Titel "Info", wo darunter "Bitte Nummer + Name eingeben" steht...
7) Ich gebe dort nochmal die Nummer ein und klicke dann wieder auf OK
8.) Es öffnet sich ein zweites Word-Dokument... usw... scheint eine Schleife zu sein.
Der Ablauf sollte folgender sein:
1) Öffnen Deiner GUI (diese soll im Vordergrund bleiben).
--> möglichst den Button "Lesen" ändern in "Memo einlesen".
Beim Klick auf "Memo einlesen" soll der Text eingelesen werden aus dem Programm-Textfenster.
2) Darunter sollte in der GUI einfach nur der Text stehen "Bitte Nummer + Namen eingeben" und darunter ein Eingabefeld dafür...
3) Darunter sollte der Text "Memo speichern" stehen und darunter der Button "Speichern".
4) Mit einem Klick auf "Speichern" soll der anfangs eingelesene Text gespeichert werden im Verzeichnis
"S:\ARCHIV\Mittelvergabe\Memos\" und zwar als ".doc"
Toll wäre noch eine Prüfung, ob die Datei bereits existiert mit der Frage, ob diese überschrieben werden soll, falls sie existiert.
So wäre es perfekt!!
Danke und schöne Grüße,
imebro
Hallo,
habe ja zu meinem Script geschrieben, das es noch nicht kommplett umgesetzt ist.
Das solltest du ja entsprechend abändern, das du auch was lernst
Teste mal das Script ... Die Namen der Button kannst du selbst abändern. ($Read = GUICtrlCreateButton("Lesen", 50, 20, 100, 25)) usw.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <Word.au3>
#NoTrayIcon
; activate part match mode of title
AutoItSetOption("WinTitleMatchMode",2)
$AutoIT = GUICreate("", 200, 150)
$Read = GUICtrlCreateButton("Lesen", 50, 20, 100, 25)
$ok1 = GUICtrlCreateLabel("",160, 25, 150, 25)
GUICtrlCreateLabel("Bitte Nummer eingeben!",20, 60, 150, 25)
$Number = GUICtrlCreateInput("", 20, 80, 150, 25)
$Save = GUICtrlCreateButton("Speichern", 50, 120, 100, 25)
GUICtrlSetState($Save, $GUI_DISABLE) ; Deaktiviert den Speichern Button
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Read
$text = "" ; leert Variable
_get_Text()
Sleep(1000)
If $text <> "" Then
GUICtrlSetData($ok1, "OK")
GUICtrlSetState($Save, $GUI_ENABLE) ; Aktiviert den Speichern Button
GUICtrlSetState($Read, $GUI_DISABLE) ; Deaktiviert den LeseButton
EndIf
Case $Save
$txt_Number = "" ; leert Variable
$txt_Number = GUICtrlRead($Number) ; liest Nummer aus Inputfeld $Number
While 1
If $txt_Number <> "" Then
_Save_to_Word()
$txt_Number = "" ; leert Variable
$text = "" ; leert Variable
GUICtrlSetData($Number, "")
GUICtrlSetData($ok1, "")
GUICtrlSetState($Save, $GUI_DISABLE) ; Deaktiviert den Speichern Button
GUICtrlSetState($Read, $GUI_ENABLE) ; Aktiviert den Lese Button
ExitLoop ; Springt aus Schleife
Else
MsgBox(0,"Achtung","darf nicht leer sein")
ExitLoop ; Springt aus Schleife
EndIf
WEnd
EndSwitch
WEnd
Func _Save_to_Word()
$oWord = _Word_Create(1)
$oDoc = _Word_DocAdd($oWord)
$oWord.Selection.TypeText ($text)
;_Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12) ; save as docx")
Local $iFileExists = FileExists("S:\ARCHIV\Mittelvergabe\Memos\" & $txt_Number)
If $iFileExists Then
$ja_nein = MsgBox(4, "", "The file exists." & @CRLF & "Überschreiben Ja/Nein")
IF $ja_nein = 6 Then _Word_DocSaveAs($oDoc, "S:\ARCHIV\Mittelvergabe\Memos\" & $txt_Number) ; save as doc"
IF $ja_nein = 7 Then MsgBox(0,"","Datei wird nicht gespeichert!")
Else
_Word_DocSaveAs($oDoc, "S:\ARCHIV\Mittelvergabe\Memos\" & $txt_Number) ; save as doc"
EndIf
_Word_Quit($oWord)
EndFunc
Func _get_Text()
; Titel of Window
$wintitle = "Stiftungsanträge / Einzelfallhilfen"
; activate window
WinActivate($wintitle)
; wait max 10 seconds for window to become active
If WinWaitActive($wintitle,"",5) = 0 then
Msgbox(16,"Timeout","Konnte Fenster nicht finden!")
Exit 1
EndIf
; retrieve text of control
$text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]")
EndFunc
Alles anzeigen
Gruß gmmg
Hallo und danke nochmals...
Ja, ich hatte schon die Buttons umgeändert. Hat prima geklappt.
Auch ansonsten hatte ich schon mit dem Code herum probiert... leider ohne Erfolg.
Jetzt - mit Deinem neuen Code - passiert folgendes:
Das GUI-Fenster öffnet sich
Ich klicke auf "Memo einlesen"
Dann verschwindet das GUI-Fenster (minimiert sich in die Taskleiste)
Ich hole es von dort wieder hervor
Dann gebe ich in das Eingabefeld die Nummer und Name ein
Jetzt klicke ich auf "Memo speichern"
Dann öffnet sich ein neues Word-Dokument und der Inhalt des Textfeldes wird korrekt eingefügt
Nun erscheint die folgende Fehlermeldung:
---------------------------
AutoIt Error
---------------------------
Line 54 (File "C:\Users\imebro\Desktop\NEU.au3"):
_Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12)
_Word_DocSaveAs($oDoc, "d:\"& ^ ERROR
Error: Variable used without being declared.
---------------------------
OK
---------------------------
Ich frage mich, wieso dort zusätzlich auf "d:\" gespeichert wird... ist das vielleicht der Fehler?
Danke und Gruss,
imebro
1. die Zeile _Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12) solltest du auskommentieren und ist es auch in meinem letzten Script! mit dem Parameter 12 _Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12) speichert man die datei im docx format
2. dein Code WinActivate($wintitle) aktiviert das Fenster mit dem Titel "Stiftungsanträge / Einzelfallhilfen"
den Bereich im Quelltext kann ich nicht testen, da ich die Anwendung nicht habe ...
gruß gmmg
Ich habe jetzt genau diese Zeile auskommentiert. Damit geht es.
Das Fenster bleibt jetzt auch immer vorne stehen.
Vielen Dank
LG
imebro
Hallo,
klar verschwindet das Word wieder, weil es mit dem Befehl _Word_Quit($oWord) geschlossen wird.
Hast du mal ein gespeichertes Dokument überprüft, ob die Daten drin stehen?
Ursprünglich hast du ja mal erwähnt, dass du für jedes Memo was du aus deinem Hauptprogramm ziehst ein einzelnes Word abspeichern willst.
Wenn das nicht so ist, müsste das Script umgebaut werden, das der Text aus mehreren Memos angefügt wird.
Die Autoit GUI aus meinem Quelltext bleibt offen, bis man es über das Kreuz schließt.
Du kannst daher so oft du möchtest den Text aus deinem Hauptprogramm auslesen.
Du drückst den Lesen Button (Text wird aus dem anderen Programm gelesen), danach wieder Speichern usw. So kannst du das wiederholen, bis die Tasten glühen
zu 2. kann ich nicht testen, weil ich eure Anwendung nicht habe, die auf den Fenstertitel reagiert. Da der Text aber ausgelesen wird, sollte das ja funktionieren.
Gruß gmmg
Kurze Rückmeldung:
Die Kollegen sind begeistert und ich soll einen Dank ausrichten
Nur aufgefallen ist, dass die Formatierungen aus dem Memofenster nicht in das Word-Dokument übernommen werden (war mir gar nicht aufgefallen).
Liegt das am Speicherprozess über AutoIT?
Z.B. sehe ich in Zeile 53 den Eintrag: $oWord.Selection.TypeText ($text)
Bedeutet der, dass quasi reiner Text kopiert wird?
Gibt es vielleicht hier eine Möglichkeit, aus Text = Doc zu machen?
Ist jetzt nur eine Vermutung...
Und es erscheint keine Abfrage, wenn der Dateiname schon existiert.
Ist aber in unserem Fall nicht so schlimm, da eh immer überschrieben werden soll
LG
imebro
Hallo imebro,
eigentlich sollte die Abfrage im folgenden Abschnitt kommen.
If $iFileExists Then
$ja_nein = MsgBox(4, "", "The file exists." & @CRLF & "Überschreiben Ja/Nein")
IF $ja_nein = 6 Then _Word_DocSaveAs($oDoc, "S:\ARCHIV\Mittelvergabe\Memos\" & $txt_Number) ; save as doc"
IF $ja_nein = 7 Then MsgBox(0,"","Datei wird nicht gespeichert!")
Else
Wegen dem Format musst du mal im Internet schauen, ob es da Beispiele gibt ...
Hast du denn mal den Code aus deinem Script genommen?
;anstelle von
$oWord = _Word_Create(1)
$oDoc = _Word_DocAdd($oWord)
$oWord.Selection.TypeText ($text)
;nimmst du den Bereich aus deinem Script und testest mal ob das mit dem Format dann passt
; Word starten
$oWord = ObjCreate("Word.Application")
; leeres Dokument hinzufügen
$oDoc = $oWord.Documents.Add()
; make word visible
$oWord.Visible = true
; insert text into document
$oDoc.Content.Text = $text
Alles anzeigen
Gruß gmmg
Hallo "gmmg",
habe das gerade mal getestet.
Leider wird auch damit nicht die Formatierung übernommen.
Zusätzlich bleibt das Word auch offen und wird nicht geschlossen.
Die Abfrage nach überschreiben (ja/nein) erscheint auch da nicht.
Das mit der Abfrage ist nicht ganz so schlimm, da eh in 99% der Fälle überschrieben werden soll.
Aber komisch ist es ja schon, dass dieser Code-Teil nicht funktioniert.
Mit dem formatieren ist schon schlimmer, da nicht nur fett markierte Sätze nicht übernommen werden, sondern auch Aufzählungen nicht als solche formatiert werden.
Im Internet habe ich gestern schon nach Lösungen dafür gesucht, aber noch nichts gefunden. Werde mal weiter suchen.
Seltsam ist, dass es manuell ja funktioniert - nur eben mit dem AutoIT-Script nicht...
Danke und Gruss,
imebro
Habe gerade mal mit den Zielformaten herum getestet.
Dazu habe ich einfach mal die 0 eingegeben im Code. Aber auch das brachte keine Veränderung.
Ebenso der Test, die Tatei als RTF abzuspeichern (mit dem Zusatz 6 im Code) brachte kein formatiertes Dokument.
Zwar wurde tatsächlich ein ".rtf" erzeugt, aber leider auch unformatiert.
Hier mal die Zielformate, die ich in einem Thread hier im Forum gefunden hatte:
Zielformate im _WordDocSaveAs sind u.a.:
0 = .doc
3 = .txt
6 = .rtf
8 = .htm
11 = .xml
12 = .docx
17 = .pdf
Merkwürdig ist ja, dass es problemlos funktioniert, wenn ich den Text manuell (Strg A / Strg C / Strg V) kopiere und speichere.
Vielleicht noch wichtig:
Meine SCI-TE-Version ist die 3.4.1
Denn in einem Thread steht folgender Hinweis:
reinhardt1julian verwendet die 3.3.10.2 Version von AutoIt. Dort wurde die Word UDF durch die WordEX ersetzt.
Daher heissen alle Funktionen nun _Word_* statt _Word*.
Meine Version ist zwar neuer, aber vielleicht hilft Dir das weiter...
LG
imebro
dann probiere es doch mal so ...
in der Funktion _Save_to_Word() ist das "$oWord.Selection.TypeText ($text)" ist durch "$oWord.Selection.Paste" ersetzt ...
Eingelesen wir der Text über die Send("^a") = alles Markieren und Send("^c") kopieren Funktion.
eventuell kannst du die Sleep (pause) rausnehmen oder verringern..
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <Word.au3>
#NoTrayIcon
; activate part match mode of title
AutoItSetOption("WinTitleMatchMode",2)
$AutoIT = GUICreate("", 200, 150)
$Read = GUICtrlCreateButton("Lesen", 50, 20, 100, 25)
$ok1 = GUICtrlCreateLabel("",160, 25, 150, 25)
GUICtrlCreateLabel("Bitte Nummer eingeben!",20, 60, 150, 25)
$Number = GUICtrlCreateInput("", 20, 80, 150, 25)
$Save = GUICtrlCreateButton("Speichern", 50, 120, 100, 25)
GUICtrlSetState($Save, $GUI_DISABLE) ; Deaktiviert den Speichern Button
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Read
$text = "" ; leert Variable
_get_Text()
Sleep(1000)
If $text <> "" Then
GUICtrlSetData($ok1, "OK")
GUICtrlSetState($Save, $GUI_ENABLE) ; Aktiviert den Speichern Button
GUICtrlSetState($Read, $GUI_DISABLE) ; Deaktiviert den LeseButton
EndIf
Case $Save
$txt_Number = "" ; leert Variable
$txt_Number = GUICtrlRead($Number) ; liest Nummer aus Inputfeld $Number
While 1
If $txt_Number <> "" Then
_Save_to_Word()
$txt_Number = "" ; leert Variable
$text = "" ; leert Variable
GUICtrlSetData($Number, "")
GUICtrlSetData($ok1, "")
GUICtrlSetState($Save, $GUI_DISABLE) ; Deaktiviert den Speichern Button
GUICtrlSetState($Read, $GUI_ENABLE) ; Aktiviert den Lese Button
ExitLoop ; Springt aus Schleife
Else
MsgBox(0,"Achtung","darf nicht leer sein")
ExitLoop ; Springt aus Schleife
EndIf
WEnd
EndSwitch
WEnd
Func _Save_to_Word()
$savePath = "S:\ARCHIV\Mittelvergabe\Memos\" ; Pfad zum Speicher der Dokumente
;~ ; Word starten
;~ $oWord = ObjCreate("Word.Application")
;~ ; leeres Dokument hinzufügen
;~ $oDoc = $oWord.Documents.Add()
;~ ; make word visible
;~ $oWord.Visible = true
;~ ; insert text into document
;~ $oDoc.Content.Text = $text
$oWord = _Word_Create(1)
$oDoc = _Word_DocAdd($oWord)
;$oWord.Selection.TypeText ($text)
$oWord.Selection.Paste
;_Word_DocSaveAs($oDoc, "d:\"& $txt_Filename,12) ; save as docx")
Local $iFileExists = FileExists($savePath & $txt_Number & ".doc")
If $iFileExists Then
$ja_nein = MsgBox(4, "", "The file exists." & @CRLF & "Überschreiben Ja/Nein")
IF $ja_nein = 6 Then _Word_DocSaveAs($oDoc, $savePath & $txt_Number) ; save as doc")
IF $ja_nein = 7 Then MsgBox(0,"","Datei wird nicht gespeichert!")
Else
_Word_DocSaveAs($oDoc, $savePath & $txt_Number) ; save as doc")
EndIf
_Word_Quit($oWord)
EndFunc
Func _get_Text()
; Titel of Window
;$wintitle = "Stiftungsanträge / Einzelfallhilfen"
$wintitle = "Dokument1 - Microsoft Word"
; activate window
WinActivate($wintitle)
; wait max 10 seconds for window to become active
If WinWaitActive($wintitle,"",5) = 0 then
Msgbox(16,"Timeout","Konnte Fenster nicht finden!")
Exit 1
EndIf
; retrieve text of control
;$text = ControlGetText($wintitle,"","[CLASS:TwwDBRichEdit; INSTANCE:1]")
Sleep (2000)
Send("^a"); alles markieren
Sleep (1000)
Send("^c"); kopieren
$text = ClipGet()
;MsgBox(0,"",$text)
EndFunc
Alles anzeigen
gruß gmmg
...da kommt schon beim Klick auf LESEN die Meldung "Konnte Fenster nicht finden"...
Ich finde aber jetzt auf Anhieb auch keinen Schreibfehler o.ä.
Der Code dieser Meldung steht in Zeile 83
In Zeile 78 im neuen Code steht "$wintitle = "Dokument1 - Microsoft Word""
Im alten Code stand "$wintitle = "Stiftungsanträge / Einzelfallhilfen"", was vom Fenstertitel her auch richtig ist.
LG
imebro
Aaaah, Du hast das jetzt mit Strg A, C, V gelöst
Aber müßten die Zeilen
Sleep (2000)
Send("^a"); alles markieren
Sleep (1000)
Send("^c"); kopieren
$text = ClipGet()
nicht weiter hoch stehen... denn in Zeile 73 wird Word ja schon geschlossen...
*** hoffe die Frage ist jetzt nicht total doof ***
LG
imebro
Sorry... nochmal ich.
Ich glaube, ich hab´s.
Habe einfach die Textzeile 77 statt 78 wieder aktiviert und jetzt klappt es... inkl. Formatierung
Also diese hier habe ich aktiviert:
$wintitle = "Stiftungsanträge / Einzelfallhilfen"
Klappt jetzt auch durchgehend mit Aufzählungen etc.
Danke und Gruss,
imebro
ja, gibt sicher auch noch eine andere möglichkeit, aber auf die schnelle, kenne ich da auch nichts.
die Zeilen haben nichts damit zu tun ..
es gibt ja einaml die funktion _get_Text() und einmal die _Save_to_Word() und werden jeweils in dem Case zweig aufgerufen.
in der _get_Text() steht alles, was mit dem auslesen des textes zu tun hat. in der _Save_to_Word() alles, vom word öffnen bis speichern.
dabei ist es egal, ob die eine weiter oben oder unter der anderen funktion im quelltext steht.
als erklärung...
du startest das autoit script. wenn alles geladen ist, bleibt das in der While1 Wend schleife (durchläuft diese permanent) klickst du nun den Button lesen, welcher im case zweig Case $Read ist, wird alles ausgeführt was darunter in dem Case steht unter anderem die Funktion _get_Text(). Praktisch ruft das Script die Funktion auf, spring zu dem Quelltext der funktion arbeitet die befehle ab und springt wieder zurück, um den rest Sleep (1000) usw. abzuarbeiten.
Case $Read
$text = "" ; leert Variable
_get_Text()
Sleep(1000)
If $text <> "" Then
GUICtrlSetData($ok1, "OK")
GUICtrlSetState($Save, $GUI_ENABLE) ; Aktiviert den Speichern Button
GUICtrlSetState($Read, $GUI_DISABLE) ; Deaktiviert den LeseButton
EndIf
man könnte die Funktion jetzt an einer beliebigen anderen stelle zum aufruf einbauen.
Die Befehle innerhalb der Funktion könntest du auch im Case rein schreiben, zum einen Wird das bei einem großen Script unübersichtlich und man könnte aus einem weiteren Case zweig diese nicht nochmal aufrufen.
gruß gmmg
Hallo "gmmg",
hoffe Du hast mein letztes Posting gelesen...
Es funktioniert ja nun (siehe oben)
LG
imebro