Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Export in TXT-File

Export in TXT-File
25.07.2018 12:49:17
Christian
Hallo liebe Gemeinde,
ich habe ein Problem. Erst hat es gar nicht so schwer ausgesehen, aber ich komme da allein nicht weiter.
Und zwar soll ich aus einem Excel-File Daten in ein TXT-File schreiben lassen.
All meine Bemühungen und Suchen hat mich nicht weiter geführt bzw ich bekam nur eine Teillösung.
Mein Problem (s. auch Screenshot):
Alle Zeilen sollen in TXT-File geschrieben werden, aber NUR alle Zeilen, die in Spalte A eine "3" stehen haben, sollen im TXT-File mit Strichpunkt getrennt werden.
Hier ein Bsp. wie das TXT File dann aussehen soll:
[Allgemein]
Ziel=XXDXS
Version_LMO=3.0
Version_XA=1.3
KdNr=81513
OcrNr=123
Datumsformat=TT/MM/JJJJ
Stringbegrenzer='
StammdatenGueltigAB=01/01/2018
[Satzbeschreibung]
3;u_lcd_bid_b_standard;abr_zZR#bwd;bs_w_b#bwd;b_r#bwd;la_eigene#bwd;pnr#bwd;kS#bwd;
[Bewegungsdaten]
3;01.07.2018;580;2;31;753;;
Wer kann mir da bitte helfen.
Ich krieg das nicht gebacken.
vielen Dank für Eure Hilfe.
Viele Grüße
Christian
Userbild

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Export in TXT-File
25.07.2018 15:55:01
Robert
Hallo Christian,
versuche es mal mit folgendem Code:
Sub ErstelleTxt()
Dim tmpStr As String, lS As Long, lZ As Long, i As Integer
Open ActiveWorkbook.Path & "\Test.txt" For Output As #1   ' Datei zur Ausgabe öffnen.
For lZ = 1 To Range("A" & Rows.Count).End(xlUp).Row       'alle Zeilen durhlaufen
Print #1, Cells(lZ, 1)                                'Zeile in TXT-datei schreiben
'bei Satzbezeichnung oder Bewegungsdaten nächste Zeile zusammenfassen
If Cells(lZ, 1) = "[Satzbeschreibung]" Or Cells(lZ, 1) = "[Bewegungsdaten]" Then
lZ = lZ + 1
If lS = 0 Then lS = Cells(lZ, Columns.Count).End(xlToLeft).Column
For i = 1 To lS
tmpStr = tmpStr & Cells(lZ, i) & ";"
Next i
Print #1, tmpStr  'Satzbezeichnung oder Bewegungsdaten in TXT-Datei schreiben
tmpStr = ""
End If
Next lZ
Close #1            'TXT-Datei schließen
End Sub
Das Makro erstellt eine Test.txt in dem Verzeichnis der Excel-Datei. Bei den zusammengefassten Bewegungsdaten habe ich aber eine kleine Änderung zu Deiner Vorgabe gemacht. Du schreibst, es müsste
3;01.07.2018;580;2;31;753;;
rauskommen. Da die Spalte B in Deinem Beispiel aber leer ist, liefert mein Ansatz
3;;01.07.2018;580;2;31;753;;
Sollte dies nicht gewollt sein, müsste man den Code noch leicht abändern.
Gruß
Robert
Anzeige
AW: Export in TXT-File
26.07.2018 08:08:16
Christian
Hallo lieber Robert,
vielen Dank für Deine Hilfe.
Das sieht alles schon sehr gut aus, nur muss ich zu meiner Schande gestehen, dass ich wohl das falsche Beispiel geliefert habe, bzw mich nicht richtig ausgedrückt habe.
Ich will mich nochmal verbessern und entschuldige mich schon mal jetzt für das Missverständnis.
Der obere Kopf (bis Zeile 13) ist komplett richtig und du hast es auch super dynamisch umgesetzt, aber unter [Bewegungsdaten] folgen mehrere Datensätze. Und alle Datensätze beginnen dann mit "3" in Spalte A.
(Anmerkung: wenn es einfache wäre, könnte man die "3" aber auch in Spalte B eintragen)
Das Endergebnis in dem Textfile muss aber so aussehen (um auch Deine Frage zu beantworten.), da die Datei dann in ein anderes System geladen werden muss:
[Allgemein]
Ziel=XXDXS
Version_LMO=3.0
Version_XA=1.3
KdNr=81513
OcrNr=123
Datumsformat=TT/MM/JJJJ
Stringbegrenzer='
StammdatenGueltigAB=01/01/2018
[Satzbeschreibung]
3;u_lcd_bid_b_standard;abr_zZR#bwd;bs_w_b#bwd;b_r#bwd;la_eigene#bwd;pnr#bwd;kS#bwd;
[Bewegungsdaten]
3;01.07.2018;580;2;31;753;;
3;26.07.2018;123;2;33;749;;
3;20.07.2018;144;2;29;747;;
.
.
.
Vielen Dank für Eure Hilfe.
Viele Grüße
Christian
Anzeige
AW: Export in TXT-File
26.07.2018 09:05:04
Robert
Hallo Christian,
in Deinem Screenshot und dem geposteten Wunschergebnis war das so nicht ersichtlich. Nebenbei bemerkt, wäre eine Beispiel-Excel-Datei besser gewesen, dann hätte man das vielleicht direkt gesehen und vor allem hätte ich mir die Datei nicht erst selber zusammenbauen müssen.
Nichts desto Trotz kannst Du Dir mal nachstehendes Makro ansehen. Ich denke, das erstellt die Daten wie gewünscht. Falls nicht, kannst Du Dich ja noch mal melden.
Sub ErstelleTxt()
Dim tmpStr As String, lS As Long, lZ As Long, i As Integer
Open ActiveWorkbook.Path & "\Test.txt" For Output As #1   'Datei zur Ausgabe öffnen.
For lZ = 1 To Range("A" & Rows.Count).End(xlUp).Row       'alle Zeilen durchlaufen
Print #1, Cells(lZ, 1)                                'Zeile in TXT-datei schreiben
'bei Satzbezeichnung nächste Zeile zusammenfassen
If Cells(lZ, 1) = "[Satzbeschreibung]" Then
lZ = lZ + 1
lS = Cells(lZ, Columns.Count).End(xlToLeft).Column
For i = 1 To lS
tmpStr = tmpStr & Cells(lZ, i) & ";"
Next i
Print #1, tmpStr  'Satzbezeichnung in TXT-Datei schreiben
tmpStr = ""
ElseIf Cells(lZ, 1) = "[Bewegungsdaten]" Then
'bei Bewegungsdaten nächste Zeilen zusammenfassen bis zur 1. leeren Zelle in Spalte A
Do
lZ = lZ + 1
tmpStr = "3;"
For i = 3 To lS
tmpStr = tmpStr & Cells(lZ, i) & ";"
Next i
Print #1, tmpStr  'Bewegungsdaten in TXT-Datei schreiben
tmpStr = ""
Loop Until Cells(lZ + 1, 1) = "" 'bis 1. leere Zelle in Spalte A wiederholen
End If
Next lZ
Close #1            'TXT-Datei schließen
End Sub
Gruß
Robert
Anzeige
AW: Export in TXT-File
26.07.2018 13:23:42
Christian
Hallo Robert,
vielen Dank für Deine Unterstützung.
Es läuft super.
Viele Grüße
Christian
Gerne und Danke für die Rückmeldung (owT)
26.07.2018 13:37:45
Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige