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, 1186 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 ..
Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Microsoft Office
Automatischer Datenimport aus csv Datei in Access DB - Wo zu ändern? (1)

Frage von Mejestic12 zum Thema Microsoft Office ...

Windows Server
PowerShell Inhalt einer csv Datei löschen (3)

Frage von makaroni zum Thema Windows Server ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (18)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...