Bestimmte Spalten aus CSV-Datei auslesen (VBS)
Hallo Community,
wieder benötige ich einmal kompetente Hilfe. Mein Script zum Auslesen bestimmte Spalten aus CSV-Dateien (über 200 "Spalten" durch Seperator = Semikolon getrennt) funktioniert eigentlich ganz prima. Allerdings scheint mir die Aufzählung der Spalten bei Zeile 15 etwas umständlich. Gibt es eine einfachere Lösung, um jene Spalten (zusammenhängend wie im Beispiel 1&2, 4&5, 71bis76 oder auch die einzelne) anzugeben ? Über ein Array ? Für konstruktive Hilfe danke ich schon jetzt.
Freundliche Grüße
G:H
wieder benötige ich einmal kompetente Hilfe. Mein Script zum Auslesen bestimmte Spalten aus CSV-Dateien (über 200 "Spalten" durch Seperator = Semikolon getrennt) funktioniert eigentlich ganz prima. Allerdings scheint mir die Aufzählung der Spalten bei Zeile 15 etwas umständlich. Gibt es eine einfachere Lösung, um jene Spalten (zusammenhängend wie im Beispiel 1&2, 4&5, 71bis76 oder auch die einzelne) anzugeben ? Über ein Array ? Für konstruktive Hilfe danke ich schon jetzt.
Set FSO=CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Dim FSO, Eingabe, Spalte, Spaltenauslese, TextZeile, Textdatei
Eingabe=Inputbox("Geben Sie die Quelldatei an:",,"BGRI11_163.csv")
On Error Resume Next
Set FSO=CreateObject("Scripting.FileSystemObject")
Set Datei = FSO.OpenTextFile(Eingabe, ForReading, False)
while not Datei.AtEndOfStream
TextZeile=Datei.Readline()
Spalte=Split(TextZeile,";")
Set Textdatei = FSO.CreateTextFile("!"&FSO.GetFileName(Eingabe), True) 'Ergebnisdatei im gleichen Ordner abspeichern
Spaltenauslese = Spalte(1) & ";" & Spalte(2) &";" & Spalte(4) &";" & Spalte(5) &";" & Spalte(33)&";" & Spalte(71) &";" & Spalte(72)&";" & Spalte(73)&";" & Spalte(74) &";" & Spalte(75)&";" & Spalte(76)
Textdatei.WriteLine Spaltenauslese
wend
Datei.Close
Freundliche Grüße
G:H
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 322975
Url: https://administrator.de/forum/bestimmte-spalten-aus-csv-datei-auslesen-vbs-322975.html
Ausgedruckt am: 06.01.2025 um 23:01 Uhr
9 Kommentare
Neuester Kommentar
Nutze die Join() Funktion.
Oder schreibe die Spalten die du haben willst in ein Array und durchläufst dann dieses.
Gruß
Spaltenauslese = Join(Array(Spalte(2),Spalte(3)),";")
Gruß
Beispiel:
' Spaltennummern im Array angeben die du auslesen willst
arrSpalten = Array(1,3)
Spalten = Split("Test1;Test2;Test3;Test4",";")
For Each spalte In arrSpalten
Spaltenauslese = Join(Array(Spaltenauslese,Spalten(spalte-1)),";")
Next
Spaltenauslese = Mid(Spaltenauslese,2)
MsgBox Spaltenauslese
Zitat von @Gurkenhobel:
hm, Danke für die schnelle Antwort erstmal.
Ich hätte aber gerne ein Lösung in Visual Basic Script (VBS), mit der PowerShell will ich nicht erst anfangen...
Sorry - war der falsche Linkhm, Danke für die schnelle Antwort erstmal.
Ich hätte aber gerne ein Lösung in Visual Basic Script (VBS), mit der PowerShell will ich nicht erst anfangen...
Wohl noch keinen Kaffee gehabt
Setze die Variable Spaltenauslese auf einen leeren String in jedem Durchlauf deiner Zeilen ... ist doch logisch da sonst alles aneinandergehängt wird
Das Spaltenauslese = Mid(Spaltenauslese,2) beseitigt nur das führende Semikolon jeder Zeile wenn der String leer ist.
Setze die Variable Spaltenauslese auf einen leeren String in jedem Durchlauf deiner Zeilen ... ist doch logisch da sonst alles aneinandergehängt wird
Das Spaltenauslese = Mid(Spaltenauslese,2) beseitigt nur das führende Semikolon jeder Zeile wenn der String leer ist.