Hallo Zusammen
Eines meiner Programme macht mir unerwartet Probleme, die ich mir nicht erklären kann. Ich hoffe, ihr habt dafür vielleicht eine Lösung.
Zu den Rahmenbedingungen:
Mein Programm wird von verschiedenen Benutzern an verschiedenen Computern benutzt und aktualisiert sich bei Bedarf über eine gemeinsame Netzwerkquelle.
Ein Teil seiner Funktion ist es, dass mittels HotkeySet ein vorhandenes Word-Dokument geöffnet, eine GUI zur Abfrage zusätzlicher Informationen eingeblendet wird und nach dem schließen der GUI eine entsprechende Anpassung des Word-Dokument mit anschließenden Druck erfolgt - eigentlich sehr simpel.
Nun hat es sich bei einer neuen Benutzerin ergeben, dass das Programm beim Start der entsprechenden Funktion abstürzt - jedoch nur bei dieser Benutzerin.
Als Erklärung gibt es dazu die folgende Meldung:
Titel "Autoit Error"
Line 5486 (File "\\[...].exe"):
Error: The requested action with this object has failed.
Der Quellcode samt Includes sieht, zur Übersichtlichkeit gekürzt, wie folgt aus.
[autoit]#include <Array.au3>
#include <Date.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListBox.au3>
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
#include <Word.au3>
Opt("WinTitleMatchMode", 1)
Opt("TrayAutoPause", 0)
Func _bestp()
Local $sdbvar, $hand, $name, $datearray[1], $var2 = 1, $araten, $oDoc
If WinExists("SDB") Then
$sdbksvar = 1
$hand = _WordCreate(@MyDocumentsDir & "\sdb_zahlung.doc")
$name = "sdb_zahlung"
Else
$hand = _WordCreate(@MyDocumentsDir & "\Zahlung.doc")
$name = "zahlung"
EndIf
If Not @error Then
WinWait($name)
$oDoc = _WordDocGetCollection($hand, 0)
;[....] Script gekürzt
Else
$pid = WinGetProcess($name)
$i = 1
$list = ProcessList("WINWORD.exe")
If $list[0][0] > 1 Then
Do
If $list[$i][1] <> $pid Then ProcessClose($list[$i][1])
$i = $i + 1
Until $i >= $list[0][0]
WinActivate($name)
Send("{F4}")
Else
MsgBox(48, "", "Schreiben konnte nicht erkannt werden. Bitte Schreiben schließen und erneut öffnen.")
EndIf
EndIf
EndFunc
Mit simplen MsgBox bin ich zumindest so weit gekommen, dass der Absturz mit dem Befehl $hand = _WordCreate(@MyDocumentsDir & "\ geschieht.
Mir erschließt sich allerdings nicht, warum. Soweit ersichtlich ist die Word-Version des Computers identisch zu den anderen.
Es handelt sich hier um das etwas betagte Word 2003.
Hat jemand von Euch eine Idee, woran er sich stören könnte? ![]()