Hallo @all,
ich bin noch relativ neu in VBS und hab da ein kleines Problem mit meinem kleinen Script.
Und zwar muss ich Daten aus einer .csv Datei auslesen, aus dem Delimiter ausschneiden und gewisse Felder dann an bestimmter Stelle in einem .txt Dokument einfügen.
Die .csv ist in der Form
;Mandant;Abrechnungsnr;Vorname; Nachname;...;
;01;04;Tim;Mueller;...;
;;02;Peter;Maier;...; usw. es können also auch leere Einträge sein...
Ich hab schon geschafft, dass die gesuchte Datei aufgerufen und zerlegt wird und danach in einer .txt Datei ausgegeben wird. Nur ist das Problem, dass immer nur die letzte Zeile eingetragen wird.
Es wäre glaube ich besser, die Einträge in ein 2-dimensionales Array zu speichern, manche Zeilen, die unwichtige Einträge haben, zu ignorieren und dann von dort aus die Felder mit mArray(3, 5) an der Stelle Zeile 3, Spalte 5 auszulesen. Nur scheiter ich bisher dran, das Speichern des Arrays über 2 For Schleifen hinzukriegen.
Könnte mir da jemand freundlicherweise helfen?
Vielen Dank schon mal im Voraus.
Grüße
P.s.: mein bisheriger Code:
Option Explicit
Dim FSO, oFile, wholeLine, mArray, i
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile("C:\Users\...\Test.csv", ForReading)
Do until oFile.AtEndOfStream
wholeLine = oFile.ReadLine
mArray = Split (wholeLine, ";")
loop
'hier wird jedes einzele Feld durchgegangen, wenn ich es in einer msgbox ausgebe
'denke also, dass am besten dort die For-Schleife aufgehoben ist und mit UBound die Array-Grenzen deklariere
Set oFile = FSO.OpenTextFile("C:\Users\...\Test.txt", ForWriting, true)
hier wird Zeile für Zeile eingetragen mit oFile.WriteLine
oFile.Close
ich bin noch relativ neu in VBS und hab da ein kleines Problem mit meinem kleinen Script.
Und zwar muss ich Daten aus einer .csv Datei auslesen, aus dem Delimiter ausschneiden und gewisse Felder dann an bestimmter Stelle in einem .txt Dokument einfügen.
Die .csv ist in der Form
;Mandant;Abrechnungsnr;Vorname; Nachname;...;
;01;04;Tim;Mueller;...;
;;02;Peter;Maier;...; usw. es können also auch leere Einträge sein...
Ich hab schon geschafft, dass die gesuchte Datei aufgerufen und zerlegt wird und danach in einer .txt Datei ausgegeben wird. Nur ist das Problem, dass immer nur die letzte Zeile eingetragen wird.
Es wäre glaube ich besser, die Einträge in ein 2-dimensionales Array zu speichern, manche Zeilen, die unwichtige Einträge haben, zu ignorieren und dann von dort aus die Felder mit mArray(3, 5) an der Stelle Zeile 3, Spalte 5 auszulesen. Nur scheiter ich bisher dran, das Speichern des Arrays über 2 For Schleifen hinzukriegen.
Könnte mir da jemand freundlicherweise helfen?
Vielen Dank schon mal im Voraus.
Grüße
P.s.: mein bisheriger Code:
Option Explicit
Dim FSO, oFile, wholeLine, mArray, i
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile("C:\Users\...\Test.csv", ForReading)
Do until oFile.AtEndOfStream
wholeLine = oFile.ReadLine
mArray = Split (wholeLine, ";")
loop
'hier wird jedes einzele Feld durchgegangen, wenn ich es in einer msgbox ausgebe
'denke also, dass am besten dort die For-Schleife aufgehoben ist und mit UBound die Array-Grenzen deklariere
Set oFile = FSO.OpenTextFile("C:\Users\...\Test.txt", ForWriting, true)
hier wird Zeile für Zeile eingetragen mit oFile.WriteLine
oFile.Close