Grüße!
Großes, kleines Projekt, wie es noch einmal so ist.
Im Moment liebäugle ich damit einen Teil meines Scripts zu optimieren, welches sich mit dem Umsortieren großer Datenmengen in Excel befasst.
Die Daten stammen aus einem dynamischen 2D-Array.
Langsamste Stelle im Script ist aktuell das Schreiben einer gesamten Spalte des 2D-Arrays in die (sich ständig ändernde) Excel-Spalte.
Aktuell schreibt das Skript jede Zeile dieser Spalte manuell in die Datei.
Vereinfachtes Beispiel:
Spoiler anzeigen
#include <Excel.au3>
[/autoit] [autoit][/autoit] [autoit]$File = @ScriptDir & "\Example.xlsx"
[/autoit] [autoit][/autoit] [autoit]$oExcel = _Excel_Open(False, False, False, False, True) ; hidden thread
$hExcel = _Excel_BookOpen($oExcel, $File)
$aContent = _Excel_RangeRead($hExcel)
For $i=0 To UBound($aContent, 1)-1 Step 1
_Excel_RangeWrite($hExcel, Default, $aContent[$i][1], "E" & ($i+1))
Next
_Excel_BookClose($hExcel)
_Excel_Close($oExcel)
Bei steigendem row-count dauert das natürlich entsprechend lange.
Gibt es eine Möglichkeit, direkt eine bestimmte Array-Spalte oder -Zeile in eine Excel-Spalte/-Zeile zu schreiben, ohne die einzelnen Felder des Arrays per loop durchzugehen?
Ich dachte daran, vielleicht direkt VBA-Code an das Objekt zu hängen statt die Funktion zu verwenden, aber aus den VBA-Schnipseln innerhalb der RangeWrite-Funktion der UDF werde ich diesbezüglich nicht schlau.
Vielleicht habt's ihr noch einen spontanen Hinweis.
Cheerio,
Matricus