Hallo zusammen,
ich möchte, dass ein Array, dass ich in meinem Autoit Skript aufgebaut habe als Excel-Datei umgesetzt wird.
Zuerst dachte ich, ich nehm einfach die integrierten Excel-Funktionen der Excel.au3.
Da ich damit aber manche Sachen nicht machen kann, wäre meine aktuelle Lösung, dass ich in Auto it eine VBScript-Datei schreibe und diese dann nach dem schreiben starte. Die VBScript-datei erzeugt dann die Excel-Datei Hier der Code, der die VBScript Datei aufbaut:
FileWrite($file, 'linesgesamt=' & (UBound($arr_ergebnisliste_final, 1)-1 * UBound($arr_ergebnisliste_final, 2)-1) & @CRLF)
FileWrite($file, 'linecounter=0' & @CRLF)
FileWrite($file, 'Set objExcel = createobject("Excel.application")' & @CRLF)
FileWrite($file, "objexcel.Visible = true" & @CRLF)
FileWrite($file, "objexcel.Workbooks.add" & @CRLF)
FileWrite($file, 'objExcel.ActiveWorkbook.Sheets(1).Name="Schmelznummernliste"' & @CRLF)
FileWrite($file, 'objexcel.Range("A1:C1").MergeCells=True' & @CRLF)
FileWrite($file, 'objexcel.Range("A2:C2").MergeCells=True' & @CRLF)
FileWrite($file, 'objexcel.Cells(1, 1).Value="Kunde / Customer:"' & @CRLF)
FileWrite($file, 'objexcel.Cells(2, 1).Value="' & $kundenname & "," & $ort & " / " & $land & '"' & @CRLF)
FileWrite($file, 'objexcel.Cells(1, 5).Value="Bestellnr. / Commission no.:"' & @CRLF)
FileWrite($file, 'objexcel.Cells(2, 5).Value="' & $hauf & '"' & @CRLF)
FileWrite($file, 'objexcel.Cells(1, 6).Value="Typ / Type:"' & @CRLF)
FileWrite($file, 'objexcel.Cells(2, 6).Value="' & $maschtyp & '"' & @CRLF)
FileWrite($file, 'objexcel.Cells(1, 7).Value="Maschinennr. / Machine no.:"' & @CRLF)
FileWrite($file, 'objexcel.Cells(2, 7).Value="' & $maschnr & '"' & @CRLF)
FileWrite($file, 'objexcel.Range("A1:G1").Font.FontStyle = "Fett"' & @CRLF)
FileWrite($file, 'objexcel.Cells.Select' & @CRLF)
FileWrite($file, 'objexcel.Selection.NumberFormat = "@"' & @CRLF)
For $i=0 to UBound($arr_ergebnisliste_final, 1)-1 Step +1
For $y=2 to UBound($arr_ergebnisliste_final, 2)-1 Step +1
FileWrite($file, 'objexcel.Cells('&$i+4&', '&$y-1&').Value="' & $arr_ergebnisliste_final[$i][$y] & '"' & @CRLF)
;Zeile zum Aktualisieren des Fortschrittsbalkens schreiben
FileWrite($file, 'linecounter=linecounter+1' & @CRLF)
Next
Next
FileWrite($file, 'objexcel.Range("A5:' & _ColNrToLetter(UBound($arr_ergebnisliste_final,2)-2) & (UBound($arr_ergebnisliste_final,1)-1)&'").Select' & @CRLF)
FileWrite($file, 'objexcel.Range("A4:G5").AutoFilter' & @CRLF)
FileWrite($file, 'objexcel.ActiveWorkbook.ActiveSheet.PageSetup.LeftHeaderPicture.Filename = "'&@ScriptDir&'\grafiken\Bosch_Logo.jpg"' & @CRLF)
FileWrite($file, 'objexcel.ActiveWorkbook.ActiveSheet.PageSetup.LeftHeader = "&G" & Chr(10) & "&""-,Fett""&18Schmelzennummernliste"' & @CRLF)
FileWrite($file, 'objexcel.Columns.AutoFit' & @CRLF)
FileWrite($file, "objexcel.Visible = true" & @CRLF)
FileWrite($file, 'objexcel.ActiveWorkbook.SaveAs("' & $path & '")' & @CRLF)
FileClose($file)
ShellExecute(@ScriptDir & "\xls_create.vbs")
[/autoit]Meine erste Frage: Ist diese Lösung aus eurer Sicht praktiabel oder gibts was "attraktiveres"?
Meine zweite Frage: Der Aufbau der Excel-Datei dauert extrem lange, da der Array über 6000 Zeilen hat, die als Excel aufgebaut werden müssen. Excel-öffnet sich eben und baut sich Zeile für Zeile auf. Gibts da eine Möglichkeit, das zu beschleunigen?
Bin für jeden Tipp dankbar.
Viele Grüße
Daniel