Herbers Excel-Forum - das Archiv

TXT-Datei

Bild

Betrifft: TXT-Datei
von: Max

Geschrieben am: 14.12.2006 07:51:24
Hallo zusammen,
ich habe eine txt-Datei mit einem bestimmten Format. Es handelt sich dabei um eine Vordatei zur Verbuchung von Forderungen in einem Rechnungswesensystem.
Dieser Datensatz hat folgenden Aufbau (beispielhafter Auszug):
????????600002001200612080072869200600000000501004381687 NWhisky Willi GDG
D.h. es sind zwischen den einzelnen Inhalten bestimmte vordefinierte Leerzeichen einzuhalten.
Aufgrund der diversen Anforderungen sollte die Bearbeitung in Excel erfolgen.
Wenn ich nun aber die txt-Datei per Excel öffne, bearbeite, die Felder als Text formatiere und die Datei wieder im Format (Text (Tabstopp-getrennt) abspeichere, dann ist die txt-Datei in ihrem Aufbau verändert, weil die Leerzeichen verschwunden sind und damit der Datensatz nicht mehr zu gebrauchen ist.
????????600002001200612080072869200600000000501004381687NWhiskyWilli..
Wie kann ich also die txt.Datei bearbeiten, um das gleiche Format zu erhalten wie vorher?
Kann mir jemand weiterhelfen?
Danke und Gruß,
Max
Bild

Betrifft: AW: TXT-Datei
von: haw

Geschrieben am: 14.12.2006 09:32:26
Hallo Max,
dazu ist es notwendig, eine eigene Routine zu verwenden.
Zuerst musst du die Daten in Excel laut Satzaufbau vorbereiten. Den Satzaufbau bekommst du sicher von demjenigen, der die Datei exportiert.
Satzaufbau bedeutet eine Auflistung der einzelnen Felder, deren Dateitypen und Länge.
In Excel kannst du dann nummerische Felder über das Zahlenformat formatieren, d.h. jede leere Stelle muss mit Nullen aufgefüllt werden, Textfelder werden normalerweise so definiert, dass leerbleibende Stellen durch Leerzeichen aufzufüllen sind.
Danach kannst du z.B. mit folgendem Code die Inhalte der Zellen in eine Textdatei namens "test.txt" schreiben:
Close
Open "C:\test.txt" For Output As #1
With ThisWorkbook.Worksheets("ZVAZeilen")
zl = .Cells(Rows.Count, 1).End(xlUp).Row
For z = 3 To zl
For s = 1 To 26
tmp = tmp & .Cells(z, s).Text & ";"
Next s
tmp = Left(tmp, Len(tmp) - 1)
Print #1, tmp
tmp = ""
Next z
End With
Close
Hier wurde aus der Tabelle "ZVAZeilen" der Bereich von A1:Z100 (wenn die letzte Zeile 100 wäre) in die Datei "test.txt" geschrieben.
Gruß Heinz
 Bild