TXT Datei trennen

20/08/2008 - 20:48 von Mike Berger | Report spam
Hallo zusammen,

ich habe nun heute noch ein kleines Problem dazubekommen und zwar:

Habe eine Datei die sieht aus wie folgt:

Gruppe_1;Name;Vorname
Gruppe_1;Name1;Vorname1
Gruppe_2;Name1;Vorname1
Gruppe_2;Name2;Vorname2
Gruppe_2;Name3;Vorname3

Nun möchte ich daraus je Gruppe eine eigene txt Datei haben, um diese
dann weiter mit Excel zu importieren.

So stelle ich mir es vor:

Wert0 = ""
Datei O:\Kunden\kunden.txt öffnen

Einlesen Zeile 1
Wert1 = Gruppe_1
Wert2 = Name
Wert3 = Vorname

if Wert1 = Wert0 then
        Erweitere Datei O:\Kunden\"Wert1".txt um die eingelesen Zeile
else Close Wert0.txt; mache neue Datei Wert1.txt
        Erweitere Datei O:\Kunden\"Wert1".txt um die eingelesen Zeile
end if

Einlesen Zeile 2
.

Kann mir hier jemand helfen?


Vielen Dank.
Mike
 

Lesen sie die antworten

#1 ekkehard.horner
20/08/2008 - 22:42 | Warnen spam
Mike Berger schrieb:
Hallo zusammen,

ich habe nun heute noch ein kleines Problem dazubekommen und zwar:

Habe eine Datei die sieht aus wie folgt:

Gruppe_1;Name;Vorname
Gruppe_1;Name1;Vorname1
Gruppe_2;Name1;Vorname1
Gruppe_2;Name2;Vorname2
Gruppe_2;Name3;Vorname3

Nun möchte ich daraus je Gruppe eine eigene txt Datei haben, um diese
dann weiter mit Excel zu importieren.

So stelle ich mir es vor:

Wert0 = ""
Datei O:\Kunden\kunden.txt öffnen

Einlesen Zeile 1
Wert1 = Gruppe_1
Wert2 = Name
Wert3 = Vorname


Wenn man 'mehreres von etwas' hat, sollte man *immer* entsprechende
Datentypen (array, dictionary) einsetzen; 'nummerierte' Variablen
sind *nie* eine gute Idee



in der ersten Zeile:
Wert1 = Gruppe_1
Wert0 = ""
also funktioniert das folgene If statement nicht
if Wert1 = Wert0 then
Erweitere Datei O:\Kunden\"Wert1".txt um die eingelesen Zeile
else Close Wert0.txt; mache neue Datei Wert1.txt
Erweitere Datei O:\Kunden\"Wert1".txt um die eingelesen Zeile
end if

Einlesen Zeile 2
.


[...]
Ich wuerde so anfangen:

Dim oFS : Set oFS = CreateObject( "Scripting.FileSystemObject" )
Dim sIFSpec : sIFSpec = ".\mk_kunden.txt"
Dim dicGroups : Set dicGroups = CreateObject( "Scripting.Dictionary" )
Dim oTS : Set oTS = oFS.OpenTextFile( sIFSpec )

Do Until oTS.AtEndOfStream
Dim sLine : sLine = Trim( oTS.ReadLine )
If "" <> sLine Then
Dim aParts : aParts = Split( sLine, ";" )
If 2 <> UBound( aParts ) Then
WScript.Echo oTS.Line, "bad format", sLine
Else
If Not dicGroups.Exists( aParts( 0 ) ) Then
Set dicGroups( aParts( 0 ) ) = oFS.CreateTextFile( ".\mk_" & aParts( 0 ) &
".txt", True )
WScript.Echo oTS.Line, "new group", aParts( 0 )
End If
dicGroups( aParts( 0 ) ).WriteLine sLine
End If
Else
WScript.Echo oTS.Line, "empty line"
End If
Loop
oTS.Close
Dim sGroup
For Each sGroup In dicGroups.Keys
dicGroups( sGroup ).Close
Next
For Each sGroup In dicGroups.Keys
WScript.Echo "--", sGroup
WScript.Echo oFS.OpenTextFile( ".\mk_" & sGroup & ".txt" ).ReadAll
Next

Ausgabe:

splitTxtFile: split .txt file (Mike Berger) =2 new group Gruppe_1
4 new group Gruppe_2
Gruppe_1;Name;Vorname
Gruppe_1;Name1;Vorname1
Gruppe_1;Name2;Vorname2

Gruppe_2;Name1;Vorname1
Gruppe_2;Name2;Vorname2
Gruppe_2;Name3;Vorname3
Gruppe_2;Name4;Vorname4

splitTxtFile: 0 done (00:00:00) =
fuer diese Eingabe-Datei:

Gruppe_1;Name;Vorname
Gruppe_1;Name1;Vorname1
Gruppe_2;Name1;Vorname1
Gruppe_2;Name2;Vorname2
Gruppe_2;Name3;Vorname3
Gruppe_1;Name2;Vorname2
Gruppe_2;Name4;Vorname4

Ähnliche fragen