Text Datei Splitten
Visual Basic oder Script erstellen.
Hallo liebe Community,
ich habe diese Textdatei:
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00#11#1#001-0006#5204564000079#Prod_dec1#14.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#38.78#9.00#3.49#42,27
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00#11#2#001-0011#5204564000161#Prod_dec2#16.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#44.32#9.00#3.99#48,31
Wie ihr alle sehen könnt is es eine Bestellung. Das Problem ist dass ich diese Datei splitten muss um 2 Dateien zu bekommen (Header und Details). Die erste Datei soll diesen inhalt haben:
Header
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00
die zweite dann
Lines
11#1#001-0006#5204564000079#Prod_dec1#14.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#38.78#9.00#3.49#42,27
11#2#001-0011#5204564000161#Prod_dec2#16.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#44.32#9.00#3.99#48,31
Die 11 ist die Referrence number die zeigt dass detail und header zusammen gehören (wie ein Schlüssel) und die Zahl dannach ist die Line number. 11#1# 11#2#
Diese # Zeichen sind immer so viele, die Datei hat also immer dieses Format. Was soll ich denn hier machen? Die Hash's zählen und es dann so trennen? Und wie soll ich es machen dass der Header nicht immer wieder wiederholt wird? Bitte hilft mir!!! Ich habe gar keine Ahnung!!! Weiß auch nicht wo ich so etwas ähnliches finden kann...
Danke im voraus
Julia
Hallo liebe Community,
ich habe diese Textdatei:
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00#11#1#001-0006#5204564000079#Prod_dec1#14.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#38.78#9.00#3.49#42,27
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00#11#2#001-0011#5204564000161#Prod_dec2#16.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#44.32#9.00#3.99#48,31
Wie ihr alle sehen könnt is es eine Bestellung. Das Problem ist dass ich diese Datei splitten muss um 2 Dateien zu bekommen (Header und Details). Die erste Datei soll diesen inhalt haben:
Header
11#999842977#999842977#0#ΥΤΔΑ#ΥΤΔΑ00020476#20080103#20080103####1234567890123#20#83.10#7.48#90.58#30.00
die zweite dann
Lines
11#1#001-0006#5204564000079#Prod_dec1#14.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#38.78#9.00#3.49#42,27
11#2#001-0011#5204564000161#Prod_dec2#16.00#Stueck#Stueck##2#1.00#0#2.00#0.00#0.00#44.32#9.00#3.99#48,31
Die 11 ist die Referrence number die zeigt dass detail und header zusammen gehören (wie ein Schlüssel) und die Zahl dannach ist die Line number. 11#1# 11#2#
Diese # Zeichen sind immer so viele, die Datei hat also immer dieses Format. Was soll ich denn hier machen? Die Hash's zählen und es dann so trennen? Und wie soll ich es machen dass der Header nicht immer wieder wiederholt wird? Bitte hilft mir!!! Ich habe gar keine Ahnung!!! Weiß auch nicht wo ich so etwas ähnliches finden kann...
Danke im voraus
Julia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 104144
Url: https://administrator.de/contentid/104144
Ausgedruckt am: 23.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Praktikantin!
Aussehen könnte das dann etwa so:
Grüße
bastla
Die Hash's zählen und es dann so trennen?
Zählen ja, aber selbst und nur einmal (damit die Anzahl der Felder für den Header bekannt ist - ich komme auf 17 Felder); für's Trennen gibt es "Split()" ...Aussehen könnte das dann etwa so:
FileIn = "D:\Bestellung.txt"
FileOutHeader = "D:\Header.txt"
FileOutDetail = "D:\Detail.txt"
NoFieldsHeader = 17 'Feldanzahl für Header
Delim = "#" 'Trennzeichen
Set fso = CreateObject("Scripting.FileSystemObject")
Set HeaderFile = fso.CreateTextFile(FileOutHeader, True)
Set DetailFile = fso.CreateTextFile(FileOutDetail, True)
Lines = Split(fso.OpenTextFile(FileIn).ReadAll, vbCrLF) 'gesamten Text zeilenweise in Array einlesen
For i = 0 To UBound(Lines) 'Alle Textzeilen durchgehen
If Trim(Lines(i)) <> "" Then 'Soferne die Zeile nicht leer ist ...
Fields = Split(Lines(i), Delim) '... in Felder aufteilen, ...
Header = Fields(0) '... erstes Feld in Variable schreiben (löscht damit alten Inhalt) ...
For j = 1 To NoFieldsHeader-1 '... und die restlichen Felder ...
Header = Header & Delim & Fields(j) '... jeweils nach einem Trennzeichen hinzufügen, ...
Next '... sodass der Header inkl Tennzeichen zusammengesetzt wird
If Header <> LastHeader Then 'Nur einen neuen Header ...
HeaderFile.WriteLine Header '... schreiben ...
LastHeader = Header '... und merken
End If
DetailFile.WriteLine Mid(Lines(i), Len(Header) + 2) 'In der Originalzeile beginnt der Detailbereich an der 2. Stelle nach dem Header
End If
Next
DetailFile.Close
HeaderFile.Close
bastla