Excel Zelle auslesen => Objektfehler in Excel.au3

  • Hallo,

    ich bin grade dabei ein Programm zur Auswertung von Excel-Tabellen zu schreiben und warum auch immer klappt folgendes nicht (mehr) :cursing: :cursing: :cursing: :

    [autoit]

    For $i = 1 To 1
    $j = 0
    Do
    $j += 1
    $Gelesen = _ExcelReadCell($oExcel1, $j, $Spalte[$i][1])
    MsgBox(0, $j, $Gelesen)
    Until $Gelesen = ""
    Next

    [/autoit]


    (Sehr vereinfacht) - $oExcel1 ist das Objekt vorher aufgerufen mit _Excelopenbook($Pfad, 0)
    $j ist die Zeile und $Spalte[$i][1] ist die Spalte (hier: 1 aus einer Input-Box ausgelesen). In dem Excel-Dokument stehen von oben nach unten die Zahlen 1-5, dennoch kommt ständig folgender Fehler:

    Spoiler anzeigen

    C:\Program Files (x86)\AutoIt3\Include\Excel.au3 (694) : ==> The requested action with this object has failed.:
    Return $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value
    Return $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn)^ ERROR

    Wenn ich das Array mit $j tausche ließt er immerhin aus, aber mein Ziel ist es die Spalte und nicht einmal diagonal die Tabelle auszulesen...
    Ich hab bereits alles erdenkliche probiert aber geholfen hat es nich 8| Selbst nach meinen älteren Scripten ist die Syntax usw. richtig...
    Vielleicht entdeckt ihr ja den Fehler,
    Aquaplant

    Einmal editiert, zuletzt von Aquaplant (25. Mai 2011 um 21:38)

  • Also wenn ich den Helpfile richtig verstehe, dann ist das Ergebnis von _ExcelReadCell im Fehlerfall "0" und @error und/oder @extended werden gesetzt. Derzeit liest Dein Script immer weiter auch wenn die maximale Zeile/Spalte erreicht ist.
    Prüfe nach jedem _ExecelReadCell ob @error und/oder @extended <> 0 sind und agiere dann entsprechend im Skript.

  • Es stimmt, dass es immer weiter ließt, aber dazu müsste es doch zumindest erstmal an den 5 Eintragungen vorbeilesen und da das nicht mal der Fall ist wird der Fehler irgendwo anders sein.
    Ich probier mal aus was passiert wenn ich Spalte 0 nehme vielleicht fängt es gar nicht bei 1 an.

    Edit:
    Mit 0 Hat es nicht geklappt, aber so:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    $PfadFile1 = "C:\Users\Work\Desktop\1.xlsx"
    $oExcel1 = _ExcelBookOpen($PfadFile1, 0)
    ;~ _ExcelSheetActivate($oExcel1, $Tabelle1)
    ;~ $oExcel2 = _ExcelBookOpen($PfadFile2, 1)
    ;~ _ExcelSheetActivate($oExcel2, $Tabelle2)
    ;~ MsgBox(0, "", $Spalte[1][1])
    For $i = 1 To 1
    $j = 0
    Do
    $j += 1
    $Gelesen = _ExcelReadCell($oExcel1, $j, $i)
    MsgBox(0, $j, $Gelesen)
    Until $Gelesen = ""
    MsgBox(0, "", "EXTILOOP")
    Next

    [/autoit]


    Ich probier jetzt noch ein wenig rum - vielleicht ist das Array kein Integer...

    Es lag daran :pinch:

    2 Mal editiert, zuletzt von Aquaplant (25. Mai 2011 um 21:42)