Kannst du mir da bitte helfen, dass die Infos nicht überschrieben werden und in neue Zeilen geschrieben werden?
Na klar. ![]()
Zum Arbeiten in Schleifen gibt es die geniale Möglichkeit mit Offset zu arbeiten. Somit erspart man sich das mühselige Addressieren anhand Spalte/Zeile mit evtl. Umrechnen etc.
Mit Offset erreicht man eine relative Addressieung vom Startrange aus. Die Startrange selber wäre Offset(0,0). Es wird adressiert: Offset(+/- Zeilen, +/- Spalten).
So läufts:
Spoiler anzeigen
#include <File.au3>
#include <Array.au3>
#include <Excel.au3>
Local $FileList = _FileListToArray("S:\Test\")
If @error Then Exit MsgBox(0, 'Fehler', 'Dateiliste konnte nicht gelesen werden!')
Local $a, $pathTXT, $oExcel = _ExcelBookOpen("S:\test.xls")
Local $lastLine = $oExcel.Worksheets(1).UsedRange.Rows.Count
If $lastLine = 1 And $oExcel.Range("A1").Value = '' Then $lastLine = 0 ; Tabelle noch leer
For $i = 1 To $FileList[0]
$pathTXT = "S:\Test\" & $FileList[$i]
_FileReadToArray($pathTXT, $a)
If @error Then ContinueLoop
EXCEL($a, $lastLine +$i)
Next
_ExcelBookSave($oExcel)
_ExcelBookClose($oExcel)
Exit
Func EXCEL(ByRef $a, $iLine)
For $i = 1 To $a[0]
Select
Case StringInStr($a[$i], 'Hostname:', 1)
$ret = StringRegExp($a[$i], '(?:: )(\w+)', 1)
$oExcel.Range("A1").Offset($iLine -1, 0).Value = $ret[0]
Case StringInStr($a[$i], 'Betriebssystemname:', 1)
$ret = StringRegExp($a[$i], '(?:: )([\w ]+)', 1)
$oExcel.Range("B1").Offset($iLine -1, 0).Value = $ret[0]
Case StringInStr($a[$i], 'Ursprüngliches Installationsdatum:', 1)
$ret = StringRegExp($a[$i], '(?:: )(\d{2}\.\d{2}\.\d{4}, \d{2}:\d{2}:\d{2})', 1)
$oExcel.Range("C1").Offset($iLine -1, 0).Value = $ret[0]
Case StringInStr($a[$i], 'Systemhersteller:', 1)
$ret = StringRegExp($a[$i], '(?:: )([\w .-]+)', 1)
$oExcel.Range("D1").Offset($iLine -1, 0).Value = $ret[0]
Case StringInStr($a[$i], 'Systemmodell:', 1)
$ret = StringRegExp($a[$i], '(?:: )([\w .-]+)', 1)
$oExcel.Range("E1").Offset($iLine -1, 0).Value = $ret[0]
ExitLoop
Case Else
ContinueLoop
EndSelect
Next
EndFunc