Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 1207 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 ...

XML
gelöst Vbs - simple XML Datei auslesen (4)

Frage von DeeJayBee zum Thema XML ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen (4)

Frage von mIsSteR zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(1)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(6)

Information von LordGurke zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (19)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (15)

Frage von Lynkon zum Thema TK-Netze & Geräte ...