CSV Datei mit VBS auslesen
Hallo zusammen,
ich bin in Sachen VBS ein totaler Anfänger und hoffe, dass ihr mir bei einem Problem helfen könnt.
Ich möchte eine CSV-Datei per VBS verändern. Die CSV kommt regelmäßig und die Änderung soll automatisch erfolgen.
Die CSV hat folgenden Aufbau:
anwenderID;anwenderName;Software
1;Meier;Office
1;Meier;Firefox
1;Meier;Notepad++
2;Schmidt;Office
2;Schmidt;Chrome
Meine Zieldatei soll wie folgt aussehen:
andwenderID;anwenderName;Software1;Software2;Software3;SoftwareN
1;Meier;Office;Firefox;Notepad++;
2;Schmidt;Office;Chrome;;
Als eindeutige Identifikation kann die anwenderID verwendet werden.
Wie kann ich es also anstellen, dass mein VB-Skript auf die anwenderID reagiert. Also die Software in eine Zeile, solange die ID identisch ist?
Oder habt ihr andere Lösungsvorschläge?
Vielen Dank für Eure Unterstützung
Björn
ich bin in Sachen VBS ein totaler Anfänger und hoffe, dass ihr mir bei einem Problem helfen könnt.
Ich möchte eine CSV-Datei per VBS verändern. Die CSV kommt regelmäßig und die Änderung soll automatisch erfolgen.
Die CSV hat folgenden Aufbau:
anwenderID;anwenderName;Software
1;Meier;Office
1;Meier;Firefox
1;Meier;Notepad++
2;Schmidt;Office
2;Schmidt;Chrome
Meine Zieldatei soll wie folgt aussehen:
andwenderID;anwenderName;Software1;Software2;Software3;SoftwareN
1;Meier;Office;Firefox;Notepad++;
2;Schmidt;Office;Chrome;;
Als eindeutige Identifikation kann die anwenderID verwendet werden.
Wie kann ich es also anstellen, dass mein VB-Skript auf die anwenderID reagiert. Also die Software in eine Zeile, solange die ID identisch ist?
Oder habt ihr andere Lösungsvorschläge?
Vielen Dank für Eure Unterstützung
Björn
Please also mark the comments that contributed to the solution of the article
Content-Key: 232922
Url: https://administrator.de/contentid/232922
Printed on: April 24, 2024 at 11:04 o'clock
4 Comments
Latest comment
Hallo scorpionesc83!
Schematisch etwa so:
Eine richtige CSV entsteht so nicht, da es (lt Deinem Beispiel oben) eine unterschiedliche Feldanzahl geben kann. Auch die Kopfzeile musst Du Dir noch zurechtlegen ...
Grüße
bastla
Schematisch etwa so:
Ein = "Deine.csv"
Aus = "Deine neue.csv"
Delim = ";"
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = CreateObject("Scripting.Dictionary")
'gesamten Dateiinhalt einlesen und zeilenweise getrennt in Array ablegen
Zeilen = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline)
'ab der zweiten Zeile (= Index 1; erste Zeile enthält Header) durchgehen
For i = 1 To UBound(Zeilen)
Felder = Split(Zeilen(i), Delim) 'anhand des Delimiters in Felder-Array zerlegen
ID = Felder(0) 'ID steht im ersten Feld
If d.Exists(ID) Then ' ID schon vorhanden?
'Wenn ja: nur Software am Ende anfügen
d.Item(ID) = d.Item(ID) & Delim & Felder(2)
Else
'neue ID: Name + Software eintragen
d.Add ID, Felder(1) & Delim & Felder(2)
End If
Next
'Alle Datensätze ausgeben
For Each ID In d.Keys 'alle Dictionary-Einträge durchgehen
Ausgabe = Ausgabe & vbNewline & ID & Delim & d.Item(ID)
Next
fso.CreateTextFile(Aus).Write Mid(Ausgabe, 3)
Grüße
bastla