Hallo Zusammen,
versuche gerade mit AutoIt eine ERP-Anwendung per OLE / COM Schnittstelle zu automatisieren.
Bisher wurde dies immer über Excel-VBA bzw. VBScript durchgeführt, was auch funktioniert.
Nun bin ich begeisterter AutoIt-Fan und versuche die VBA- bzw. VB-Scripte auf AutoIt umzustellen.
Dabei tritt das seltsame Phänomen auf, dass aus AutoIt heraus nicht alle Methoden des Anwendungs-Objektes funktionieren, während es diesbezüglich mit VBA/VBS keinerlei Probleme gibt.
Im folgenden habe ich mal ein Beispiel-Skript aufgelistet:
Local $oHWP
Local $wert
Local $i
$oHWP = ObjCreate ("HWP.Anwendung")
if ($oHWP.Angemeldet = 0) Then ; funktioniert
$oHWP.Anmelden ("USER","PASSWORD") ; liefert Fehler "COM-Error 80020003, Mitglied nicht gefunden"
endif
$wert = $oHWP.Version ; funktioniert (Version der Software abfragen)
$wert = $oHWP.Table("ADR").Anzahl ; funktioniert (Anzahl der Adressen abfragen)
$oHWP.Table("ADR").ErsterSatz ; liefert Fehler "COM-Error 80020003, Mitglied nicht gefunden"
For $i = 1 to $wert
MsgBox (0, "Information", $oHWP.Table("ADR").Feld("Nummer")) ' funktioniert
$oHWP.Table("ADR").NaechsterSatz ' funktioniert
Next
$oHWP = 0
Exit
Die Fehlercodes wurden über das Standard-Verfahren ($oMyError = ObjEvent("AutoIt.Error","MyErrFunc")) ermittelt, das aus Gründen der Übersichtlichkeit im obigen Code weggelassen wurde.
Nochmals der Hinweis: Alle oben als nicht funktionierende Methoden gekennzeichneten Aufrufe in AutoIt funktionieren ohne Probleme unter VBA / VBS in der o.a. Syntax.
Der Hersteller der Software behauptet nun natürlich, wenn es unter VBA / VBS ohne Fehler funktioniert, so ist seine Schnittstelle in Ordnung und es liegt an AutoIt.
Soweit ich in Erfahrung bringen konnte, verwendet der Hersteller für die COM Schnittstelle das sog. "late binding" Verfahren.
Nun die Frage:
Gibt es irgendwelche Besonderheiten zu beachten bzw. Tricks, um aus AutoIt heraus OLE-/COM-Objekte mit "late binding" aufzurufen?
Wäre für Eure Hilfe sehr dankbar.
Gruss, Frank