Das Programm an dem ich gerade Arbeite schreibt
mit Hilfe der Funktion SendKeys(), Strings in eine
zuvor neu erstellte und mit MS Word geöffnete .doc Datei.
Diese Datei beinhaltet eine Exceltabelle, in die ich
ebenfalls mit SendKeys() schreibe.
Das merkwürdige hierbei ist, das ohne ersichtlichen Grund
und scheinbar zufällig mein Programm
in der zweiten Zelle dieser Tabelle mit dem schreiben der Strings abbricht oder auch nicht.
Wenn ich vor dem SendKeys()-Befehl für die zweite Zelle
ein Delay(300) in meinem Code schreibe, funktioniert
das schreiben in die zweite Zelle immer einwandfrei.
Nun Frage ich mich, wieso nicht die erste oder dritte Zelle?
Für Hilfen und Denkanstöße wäre ich sehr dankbar!

Rechts(0) = Den Corsur in Word eine Position nach rechts
Links(0) = nach links
Runter(0) = nach unten
Auszug aus meinem Programm:
Code: Alles auswählen
Procedure SendKey(Key.s)
VK.w = VkKeyScanEx_(Asc(Key),GetKeyboardLayout_(0))
If VK = -1
ProcedureReturn
EndIf
If MapVirtualKey_(VK, 2) = 0
Extended.l = #KEYEVENTF_EXTENDEDKEY
Scan.l = MapVirtualKey_(VK, 0)
Else
Extended = 0
Scan = 0
EndIf
Shift.l = VK & $100
Ctrl.l = VK & $200
Alt.l = VK & $400
If Shift
keybd_event_(#VK_SHIFT, 0, 0, 0)
EndIf
If Ctrl
keybd_event_(#VK_CONTROL, 0, 0, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, 0, 0)
EndIf
VK & $FF
keybd_event_(VK, Scan, Extended, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | Extended, 0)
If Shift
keybd_event_(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Ctrl
keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
EndIf
EndProcedure
Procedure SendKeys(String.s)
For Letter.l = 1 To Len(String)
SendKey(Mid(String, Letter, 1))
Next
EndProcedure
Procedure Rechts(RIGHT)
VK.w = #VK_RIGHT
Scan.l = MapVirtualKey_(#VK_RIGHT, 0)
VK & $FF
keybd_event_(VK, Scan, #KEYEVENTF_EXTENDEDKEY, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | #KEYEVENTF_EXTENDEDKEY, 0)
EndProcedure
Procedure Links(LEFT)
VK.w = #VK_LEFT
Scan.l = MapVirtualKey_(#VK_LEFT, 0)
VK & $FF
keybd_event_(VK, Scan, #KEYEVENTF_EXTENDEDKEY, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | #KEYEVENTF_EXTENDEDKEY, 0)
EndProcedure
Procedure Runter(DOWN)
VK.w = #VK_DOWN
Scan.l = MapVirtualKey_(#VK_DOWN, 0)
VK & $FF
keybd_event_(VK, Scan, #KEYEVENTF_EXTENDEDKEY, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | #KEYEVENTF_EXTENDEDKEY, 0)
EndProcedure
keybd_event_(#VK_MENU,0,0,0)
keybd_event_(#VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
SendKeys("bbb")
Delay(1000)
ForEach Liste()
If CountString(Liste(), "x") > 0
Stueckzahl.q = ValQ(ReplaceString(Liste(), "x", ""))
SendKeys(StrQ(Stueckzahl.q))
Else
SendKeys(Liste())
EndIf
Rechts(0)
NextElement(Liste())
;DAS NÄCHSTE SENDKEYS SCHREIBT IN DIE ZWEITE
;ZELLE UND DAS PROGRAMM BRICHT OHNE DELAY
;IMMER MAL WIEDER AB ODER AUCH NICHT!
Delay(300)
SendKeys(Liste())
Rechts(0)
NextElement(Liste())
SendKeys(Liste())
Rechts(0)
SendKeys("C")
Rechts(0)
NextElement(Liste())
SendKeys(Liste())
Rechts(0)
NextElement(Liste())
If CountString(Liste(), ",") > 0
Einzelpreis.q = ValQ(ReplaceString(Liste(), ",", ""))
SendKeys(Liste())
EndIf
Rechts(0)
NextElement(Liste())
SendKeys(Liste())
NextElement(Liste())
If GetGadgetState(16) = 1
Rechts(0)
Einzelpreis.q * Stueckzahl.q
Summe.q + Einzelpreis.q
Gesamtpreis$ = ReplaceString(StrQ(Einzelpreis.q), Right(StrQ(Einzelpreis.q), 2), "," + Right(StrQ(Einzelpreis.q), 2))
SendKeys(Gesamtpreis$)
Links(0)
EndIf
For z = 0 To 5
Links(0)
Next z
Runter(0)
Next