Hallo Leute,
ich habe hier eine kleine Herausforderung bei der ihr mir vielleicht helfen könnt.
Ich habe ein Tool in Excel (VBA) geschrieben was jetzt in einer neuen Version mit AutoIT kombiniert werden soll um ggf. Daten aus einem anderen Programm auszulesen.
Um ein Menü mit erweiterten Befehlen zu genieren habe ich mich für ein Formblatt mit "embedded" Excel entschieden. Somit entfällt für mich die Möglichkeit mit "ObjCreate" zu arbeiten. Stattdessen wird "ObjGet" verwendet.
Und hier kommt mein Problem:
Das bekannte funktioniert ohne Probleme
[autoit]$oExcel = ObjCreate("Excel.Application")
With $oExcel
.Visible = 1
.WorkBooks.Open(@DesktopDir & "\test.xls")
.ActiveWorkBook.ActiveSheet.Cells(1,1).Value="test"
.Run("Clear")
EndWith
In meinem Fall wird aber folgendes verwendet (gekürzt auf benötigte Codeanteile):
[autoit]$filepath = @DesktopDir & "\test.xls"
$excel = ObjGet($filepath)
$pof = GUICreate("XXX - Welcome " & @UserName & " " & "- Today: " & " " & @MDAY & "." & @MON & "." & @YEAR , @DesktopWidth, @DesktopHeight, -1, -1, $WS_CLIPSIBLINGS _
+ $WS_SYSMENU + $WS_CAPTION + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_THICKFRAME + $WS_SIZEBOX + $WS_GROUP + $WS_CLIPCHILDREN + $WS_MAXIMIZE)
$GUI_ActiveX = GUICtrlCreateObj($excel, 0, 180, @DesktopWidth, @DesktopHeight)
GUISetState(@SW_SHOW)
Func GenerateClick()
$excel.Run("Clear")
$excel.Close
GUIDelete()
EndFunc
Diese Variante wird dann immer mit folgender Fehlermeldung abgebrochen:
==> The requested action with this object has failed.:
$excel.Run("Clear")
$excel.Run("Clear")^ ERROR
Hat von euch noch jemand eine Idee wie man das Macro ausführen kann, wenn ObjGet anstatt von ObjCreate verwendet wird?
Vielen Dank im Voraus!
Grüße,
Robert