Probleme bei _OL_ItemMove aus der Outlook-UDF

  • Hallo Leute,

    hier habe ich leider kein ausführbares Beispiel sondern nur eine Fehlerbeschreibung und eine Funktion. Vielleicht sieht jemand darin einen Fehler oder kann mir die beobachteten Effekte erklären.

    Was soll das Skript machen: Mails aus einem Outlook-Ordner lesen, die Inhalte verarbeiten (hier in eine Excel-Datei schreiben) und alle erfolgreich verarbeiteten Dateien in einen "gelesen"-Ordner verschieben. Dazu werden alle erfolgreich gelesenen Outlook Elemente in einem Array gespeichert ($aMoveItems), dass am Ende in einer Schleife durchlaufen wird.

    Problembeschreibung:

    In der For-Schleife, in der die Items verschoben werden, wird nach jedem Aufruf von _OL_ItemMove geprüft, ob es erfolgreich war. Leider ist es das häufiger mal nicht. Im Fehlerfall verlasse ich das Skript mit Exit. Würde ich den Fehler ignorieren, würde sich AutoIt aufhängen.

    Das für mich irritierende ist der zurückgegebene Fehlerwert 6 (No or an invalid item has been specified). Dabei werden doch nur die EntryIDs von Mails gespeichert, die vorher gelesen werden konnten.

    Spoiler anzeigen

    Grüße autoiter

  • Auf die Schnelle finde ich keinen Fehler.
    Mir fällt nur auf, dass Du $aMoveItems mit einem Elment mehr anlegst, als Mails gefunden wurden.

    Code
    Local $aMoveItems[$g_aOL_Item[0][0] + 1]

    Du verarbeitest dann $iCount - 1 Elemente beginnend mit 0 aus $aMoveItem.
    Stelle sicher, dass Du nicht das überzählige Element (am Ende der Tabelle) versehentlich mitverarbeitest. Lasst Dir sicherheitshalber die zu verarbeitende EntryID ausgeben-
    Stelle sicher, dass Du die EntryID (die den Fehler bringt) nicht schon mal verschoben hast (prüfe einfach die Nummern der verarbeiteten EntryIDs mit der aus der Fehlermeldung:

    Code
    ConsoleWrite("Anzahl zu verschiebender Mails: " & $iCount-1 & @CRLF)
    For $i = 0 To $iCount - 1
        ConsoleWrite("Verarbeite: " & $aMoveItems[$i] & @CRLF)
        _OL_ItemMove($g_oOutlook, $aMoveItems[$i], Default, "Nutzer@Domain\Posteingang\Formulare\ABC_Mails\gedruckt_ABC_Mails")
        If @error <> 0 Then Exit MsgBox(16, "Fehler-Abbruch", "Beim Verschieben der Mail-Nr.: " & $i & " (" & $aMoveItems[$i] & " ist ein Fehler aufgetreten. (Fehler-Nr: " & @error & ")")
    Next
  • Hallo water

    Danke für deine Hilfe.

    Mit leeren Elementen rechne ich nicht. Direkt vor der Schleife verkleinere ich das Array auf $iCount (ReDim $aMoveItems[$iCount]).

    Stelle sicher, dass Du die EntryID (die den Fehler bringt) nicht schon mal verschoben hast (prüfe einfach die Nummern der verarbeiteten EntryIDs mit der aus der Fehlermeldung:

    Okay. Das werde ich mal testen. Leider kann ich den Fehler nicht beliebig reproduzieren. Mal passiert es, mal nicht. Ich werde mal alle einzelnen Schritte in ein Log schreiben und prüfen.

    Grüße autoiter