Excel-Modul löschen

  • Welche Version von AutoIt verwendest Du?

  • Dann brauchst Du einen COM Error Handler der den Fehler abfängt.
    Siehe ObjEvent in der Hilfe.

    Code
    Global $__goCOMErrorHandler = ObjEvent("AutoIt.Error", "_COMErrFunc")
    
    
    ; Dein Code gehört hier rein
    
    
    Func Template_COMErrFunc()
        ; Do nothing special, just check @error after suspect functions.
    EndFunc   ;==>Template_COMErrFunc
  • So? Der Fehler kommt jedenfalls noch immer.

  • Dann poste mal was Du in SciTE für Meldungen bekommst.

  • "C:\Users\peter\Documents\AutoIT\test 5.au3" (18) : ==> The requested action with this object has failed.:
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Modul1"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject^ ERROR
    >Exit code: 1 Time: 0.3428

    Also, dass er das Modul nicht findet im Grunde.

  • Mein Fehler:
    Sollte natürlich

    Code
    Func _COMErrFunc()

    heissen.

  • Dann lassen wir das mal so

  • Nicht ganz:

    Wenn ich die Datei nicht gespeichert habe, geht es, da im Titel nur z.B. "Mappe1" steht

    Wenn ich allerdings eine gespeicherte Datei öffne, geht es nicht mehr, da im Titel "Mappe1.xlsx" steht. Rechts die Endung abschneiden hat seltsamerweise auch nichts gebracht. Ich prüfe morgen mal, ob es am Leerzeichen im Dateinamen liegt. Heute ist erstmal Feierabend ;)

  • Dann versuch beides, zuerst "Mappe1" und wenn das einen Fehler gibt, dann "Mappe1.xlsx".

  • Hm... Es funktioniert weiterhin nur bei der ungespeicherten Mappe1.

    Code:

    Gibt es hier eigentlich "nur" water im forum?^^

    2 Mal editiert, zuletzt von P1xelfehler (23. Februar 2016 um 09:09) aus folgendem Grund: CODE GEÄNDERT!!

  • Habs rausgefunden!!!!

    Man muss es so machen, dann gehts:

    Code
    Global $oWorkbook = _Excel_BookAttach($Title,"Title")

    Hier nochmal der komplette Code (bisschen aufgeräumter):


  • Perfekt!

  • Ich melde mich hier doch nochmal ;)

    Habe das jetzt erstmal so gemacht (so wird nur neu importiert, wenn noch nicht importiert wurde - Idealfall also):

    Dass nur ein Fehler beim Löschen abgefangen wird, ist sehr gut. Jetzt möchte ich aber eine Fehlermeldung haben, wenn Excel nicht geöffnet ist, das Skript aber gestartet wurde. Wie mache ich das?

  • Schau Dir mal die Hilfe zu _Excel_Open an. @extended wird auf 0 gesetzt, wenn Excel vorher noch nicht lief und gestartet wurde.