Excel.au3 > Zeilen sind leer

  • Hallo,

    ich habe ein Programm, welches verschiedene Exceldateien vergleicht und die Ergebnisse filtert und in eine neue Tabelle einträgt. Allerdings werden beim Schreiben in diese neue Tabelle nicht alle Daten gespeichert. Daher wollte ich fragen, ob jemand hier einen Fehler finden kann:

    Spoiler anzeigen
    [autoit]


    $iForExcel = 0

    [/autoit] [autoit][/autoit] [autoit]

    Func _Auslesen($sName)
    $aPfad = _FileListToArray($sPfad & "\", '*.xls', 1)
    $oNewWb = _Excel_BookNew($oAppl, 1)
    For $k = 1 To UBound($aPfad) - 1

    [/autoit] [autoit][/autoit] [autoit]

    $iForExcel = $iForExcel + 1
    Global $oCompWb = _Excel_BookOpen($oAppl, $sPfad, False, False)
    Global $aInhalt = _Excel_RangeRead($oCompWb, 1, $oWorkbookDomain.ActiveSheet.Usedrange.Columns("B:B"), 2)
    _Excel_BookClose($oWorkbookDomain)
    _ArraySort($aInhalt, 1)
    $aInhalt = _ArrayUnique($aInhalt)
    _ArrayDelete($aInhalt, 1)
    ;Prüfen, ob $sName vorhanden ist
    $iName = _ArrayFindAll($aInhalt, $sName, Default, Default, Default, Default, 0)
    If $iName < 0 Then
    _Excel_RangeWrite($oNewWb, Default, $sName, "C" & $iForExcel) ;Wenn nicht, Name in Zelle C und $iForExcel (wird mit jedem Schleifendurchlauf hochgezählt)...
    _Excel_RangeWrite($oNewWb, Default, "Keine Daten", "D" & $iForExcel) ;...und Daten in Zelle D und $iForExcel eintragen (im ersten Durchlauf C1 und D1 z.B.)
    Else
    $sComp = StringTrimRight($aPfad[$k], 4)
    _Excel_RangeWrite($oNewWb, Default, $sName, "A" & $iForExcel) ;Sonst selbiges in A1...
    _Excel_RangeWrite($oNewWb, Default, $sComp, "B" & $iForExcel) ;... und B1 machen
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _Excel_BookSaveAs($oNewWb, @ScriptDir & "\netzwerkdaten.xls", Default, True) ;Workbook speichern unter "netzwerkdaten"
    _Excel_BookClose($oNewWb)
    EndFunc

    [/autoit]

    Zur Erklärung:
    Wenn $iName kleiner Null ist, sprich nicht im Array vorhanden ist, dann soll er in die Zeile C & D mit dem Namen und dem Hinweis "Keine Daten" schreiben. Wenn es nicht kleiner Null ist, dann soll in die Zelle A & B der Name gefolgt von den Daten stehen.
    Natürlich soll für jedes dieser "Paare" eine neue Zeile begonnen werden. Allerdings schreibt er nur die Daten des letzten schleifendurchlaufes rein, immerhin jedoch in die richtigen Zellen...

    Ich hoffe, ihr versteht mein Problem und könnt mir helfen.

    Viele Grüße und Danke vorab,
    der Robert :thumbup:

    Edit: Bäume und Wald... Problem konnte ich selbst lösen! habe in der Schleife ja jedes mal ein neues Workbook erstellt und daher ist das alte jedesmal überschrieben worden...

    2 Mal editiert, zuletzt von DasIch (18. November 2014 um 16:05)