Message Box

  • Hallo Leute,

    ich bräuchte eure Hilfe, denn ich komme mit der Hilfe nicht mehr weiter...
    hier mein Skript:


    Der Fehler muss in den Zeilen 18-22 sein. Ich möchte das er mir eine Nachricht sendet, wenn er die Excel-Datei überschrieben hat und eine Nachricht wenn er aufgrund eines Fehler das nicht geschafft hat.
    Das mag für manche eine sehr triviale Frage sein, aber ich bin noch extrem neu in diesem Programm.

    Danke für eure Hilfe!!!

    Edit bernd670: Quellcode formatiert

  • Geh mal in die AutoIt-Hilfe und suceh nach "@exitcode"...da findest du eine Tabelle mit Key-Value paaren. Da steht:

    @exitCode Exit code as set by Exit statement.

    in deinem Script kann man kein Exit zuvor finden. Also kann das schonmal nicht der richtige Weg sein. Zudem ist mir die Schreibweise @exitCode ( $WERT ) unbekannt. Ich kenne das wenn nur @exitCode = $WERT.
    Jedenfalls ist das nicht richtig zu dem was du gedanklich tun möchtest. Da die Nachricht Überschreiben erfoglreich immer erscheinen wird, gehe ich mal davon aus das ist auch falsch und du willst den Rückgabewert von _Excel_BookSaveAs auswerten.

    In Diesem Falle musst du folgendes schreiben:

    AutoIt
    $iRetVal = _Excel_BookSaveAs ($Appl, $Dateipfad)
    If $iRetVal = 1 Then
    MsgBox (0,"Excel-Datei", "Überschreiben erfolgreich")
    Else
    MsgBox(5, "Excel-Datei", "Speichvorgang nicht möglich")
    EndIf

    Grüße Yaerox

    Grüne Hölle

  • Ohne jemals etwas mit Excel+AutoIt gemacht zu haben, würde die AutoIt-Hilfe zu '_Excel_BookSaveAs() folgendes empfehlen:

    Code
    _Excel_BookSaveAs ($Appl, $Dateipfad)
    If Not @error Then
    	MsgBox (0,"Excel-Datei", "Überschreiben erfolgreich")
    Else
    	MsgBox(5, "Excel-Datei", "Speichvorgang nicht möglich")
    EndIf

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo Yaerox,

    danke dir für deine Hilfe, dennoch sagt er mir jetzt das der "Speichervorgang nicht möglich" war, aber er ist doch erfolgreich...
    Es sieht jetzt so aus:


    _Excel_RangeWrite ($Excel, $Excel.Activesheet, "10","A1:D10")

    _Excel_BookSaveAs ($Appl, $Dateipfad)
    $iRetVal = _Excel_BookSaveAs ($Appl, $Dateipfad)
    If $iRetVal = 1 Then
    MsgBox (0,"Excel-Datei", "Überschreiben erfolgreich")
    Else
    MsgBox(5, "Excel-Datei", "Speichvorgang nicht möglich")
    EndIf

    _Excel_BookClose ($Excel)
    Sleep (2000)
    MsgBox (0,"Beenden", "Programm wird jetzt beendet")
    _Excel_Close ($Appl,Default, True)

  • _Excel_BookSaveAs ($Appl, $Dateipfad)
    $iRetVal = _Excel_BookSaveAs ($Appl, $Dateipfad)

    das ist doppelt gespeichert ;)

    Mach es so:

    _Excel_BookSaveAs ($Appl, $Dateipfad)
    If @error Then MsgBox(0, "Error _Excel_BookSaveAs", "@error= " & @error & @CRLF & "@extended= " & @extended)

    Dann kommt nur eine Fehlermeldung wenn das Speichern nicht geklappt hat und Du hast den Fehlercode, warum es nicht geklappt hat.

    Außerdem

    Sleep (2000)

    MsgBox (0,"Beenden", "Programm wird jetzt beendet")

    Das Sleep ist unnötig, bei MsgBox wird eh bis zu einer Eingabe gewartet.

  • So jetzt hat es funktioniert. Die Lösung von Yaerox hat funktioniert, allerdings mit der Änderung des $iRetVal = 0 statt = 1 wie du es in der Lösung hattest.

    Die anderen Lösungen haben irgenwie nicht so funktioniert.... Danke trotzdem für eure super schnelle Hilfe!

  • Uii das stimmt, ja da habe ich einen Fehler gemacht, aber er ist die ja aufgefallen ;)

    Der Lösungsvorschlag von BananaJoe ist normalerweise auch der Lösungsweg den ich bevorzuge, sofern es als Rückgabe nur 0 und 1 gibt, und die eigentliche Meldung in @error steht ;)

    Freut mich wenn es dir geholfen hat.

    Grüße Yaerox

    Grüne Hölle

  • AutoIt
    MsgBox(0, "Error _Excel_BookSaveAs", "@error= " & @error & @CRLF & "@extended= " & @extended)

    Parameters

    flag The flag indicates the type of message box and the possible button combinations. See remarks.
    title The title of the message box.
    text The text of the message box.


    Parameter 1: 0
    Parameter 2: Error _Excel_BookSaveAs
    Parameter 3: "@error= " & @error & @CRLF & "@extended= " & @extended

    Je nach Funktion in AutoIt werden die Variablen @error und @extended mit Fehlercodes belegt. D.h. @error enthält z.B. 4711, dann ist 4711 der Fehlercode.
    Es gibt auch Funktionen die leider den Wert von @error nur auch 1 oder 0 setzen, dann musst du hoffen, dass zusätzlich @extended gesetzt ist. @extended hätte dann in so einem Fall wo @error ohne hilfreichen Fehlercode gesetzt ist den eigentlichen Fehlercode 4711.
    Und dann gibt es einige wenige Funktionen meist in UDFs, die nichts tun :P

    Die Ausgabe im Fehlerfall wäre also eine "hilfreiche Debugging-Ausgabe" und würde so aussehen:

    @error=1
    @extended=4711

    Grüße Yaerox

    Grüne Hölle

  • Beim Lösungsvorschlag von BananaJoe, verstehe ich die Angaben in der MessageBox überhaupt nicht...

    Als Titel steht der Befehl drin, bei dem der Fehler auftritt (das man gleich weiß, was los ist)

    Ansonsten lasse ich mir die @error-Codes ausgeben und schreiben nur "@error: " davor, daß man gleich sieht, daß es die @error-Codes sind. Diese sind in der Hilfe beschrieben.

    Zusätzlich lasse ich mir die @extended-Codes ausgeben, die helfen manchmal, wenn man keine Fehlerursache findet und dann in die UDF (in dem Fall Excel.au3) schaut.

    Mit If @error Then MsgBox(....) lasse ich mir das alles nur anzeigen, wenn wirklich ein Fehler aufgetreten ist, wenn es läuft interessiert es ja keinen ;)

    Ich hoffe, ich konnte etwas Klarheit schaffen...