Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

CSV Datei mit VBS auslesen

Frage Entwicklung VB for Applications

Mitglied: scorpionesc83

scorpionesc83 (Level 1) - Jetzt verbinden

18.03.2014 um 11:34 Uhr, 1171 Aufrufe, 4 Kommentare

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
Mitglied: bastla
18.03.2014 um 11:42 Uhr
Hallo scorpionesc83 und willkommen im Forum!

Dein Stichwort wäre "Dictionary" ...

Grüße
bastla
Bitte warten ..
Mitglied: scorpionesc83
18.03.2014 um 11:50 Uhr
Hallo bastla,

Danke für deine Antwort.

Wie würde das denn in meinem Beispiel aussehen? Ich habe gerade nach Dictionary und vbs gesucht, muss ich da aber noch ganz schön reinlesen.

VG Björn
Bitte warten ..
Mitglied: bastla
18.03.2014 um 12:21 Uhr
Hallo scorpionesc83!

Schematisch etwa so:
01.
Ein = "Deine.csv" 
02.
Aus = "Deine neue.csv" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set d = CreateObject("Scripting.Dictionary") 
07.
 
08.
'gesamten Dateiinhalt einlesen und zeilenweise getrennt in Array ablegen 
09.
Zeilen = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
10.
 
11.
'ab der zweiten Zeile (= Index 1; erste Zeile enthält Header) durchgehen 
12.
For i = 1 To UBound(Zeilen) 
13.
    Felder = Split(Zeilen(i), Delim) 'anhand des Delimiters in Felder-Array zerlegen 
14.
	ID = Felder(0) 'ID steht im ersten Feld 
15.
	If d.Exists(ID) Then ' ID schon vorhanden? 
16.
        'Wenn ja: nur Software am Ende anfügen 
17.
        d.Item(ID) = d.Item(ID) & Delim & Felder(2) 
18.
    Else 
19.
        'neue ID: Name + Software eintragen 
20.
        d.Add ID, Felder(1) & Delim & Felder(2) 
21.
    End If 
22.
Next 
23.
 
24.
'Alle Datensätze ausgeben 
25.
For Each ID In d.Keys 'alle Dictionary-Einträge durchgehen 
26.
    Ausgabe = Ausgabe & vbNewline & ID & Delim & d.Item(ID) 
27.
Next 
28.
 
29.
fso.CreateTextFile(Aus).Write Mid(Ausgabe, 3)
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
Bitte warten ..
Mitglied: scorpionesc83
18.03.2014 um 15:02 Uhr
Hallo bastla,

Danke für Deine Antwort.

Ich probiere das spätestens morgen einmal aus.

VG Björn
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(1)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...