Herbers Excel-Forum - das Archiv

VBA_zeilen in txt


Betrifft: VBA_zeilen in txt
von: Carina

Geschrieben am: 11.09.2019 13:34:54
Hallo,
mein Name ist Carina und ich schreibe gerade an meiner Masterarbeit, leider war diese nicht auf so viel Programmieren ausgelegt wie es gerade stattfindet.
Ich scheitere an folgendem Problem.
Ich habe ein Excel mit mehreren Spalten und Zeilen. Für jede Steinnummer (Spalte A) gibt es mehrere Zeilen. Ziel ist es für jede Steinnummer eine txt Datei zu haben die Start.Datum, End.Datum und Transportweite beinhaltet, wo die Spalten durch Tapstopps getrennt sind.
Ich hab euch die Datei hier hochgeladen
https://www.herber.de/bbs/user/131975.xlsx
Falls irgendetwas noch unverständlich ist einfach fragen ich stecke schon so in der Materie, dass es für mich so selbstverständlich ist.
Vielen lieben Dank.
Liebe Güße,
Carina Wittberger

Betrifft: AW: VBA code
von: 1712466.html

Geschrieben am: 11.09.2019 14:22:38
Hallo Carina,
der Code ist wenig getestet, also bitte zuerst an wenigen Beispielen prüfen:

Sub F_en()
Stein = 0
Pfad = "c:\temp\"
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) <> Stein Then
Stein = Cells(i, 1)
On Error Resume Next
Close #1
Err.Clear
Open Pfad & Cells(i, 1) & ".txt" For Append As #1
Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
Else
Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
End If
Next i
End Sub

mfg

Betrifft: AW: VBA code
von: 1712467.html
Geschrieben am: 11.09.2019 14:30:33
Hallo,
wow das ging aber schnell.
Und wie schaff ich es dann noch, dass jede Datei mit der jeweiligen Steinnumer beschriftet wird?
Besten Dank im Voraus.
Lg,
Carina

Betrifft: AW: das ist so eingestellt
von: 1712468.html
Geschrieben am: 11.09.2019 14:35:07
Hallo,
der Dateiname ist die Zahl der Spalte 1 mit ".txt". Dies steht im "Open"-Befehl.
mfg

Betrifft: AW: das ist so eingestellt
von: 1712469.html
Geschrieben am: 11.09.2019 14:39:11
ahh ok danke macht sinn!
Danke danke danke

Betrifft: AW: VBA code
von: 1712521.html

Geschrieben am: 11.09.2019 17:42:25
Hallo Fennec
Super Dein Makro!
Ich habe allerdings ein Problem:
Vom letzten "Stein" der Excel-Datei wird zwar eine txt-Datei erstellt. Sie bleibt aber leer.
Dazu kommt: Wenn ich diese letzte Datei (90764.txt) im Windows-Explorer löschen will, erhalte ich die Meldung: "Datei wird verwendet. Die Aktion kann nicht abgeschlossen werden, da die Datei in Microsoft Excel geöffnet ist."
Ich habe den Pfad angepasst: Statt Pfad = "c:\temp\" steht bei mir im Makro:
Pfad = "D:\TestSteine\"

Wie muss man da vorgehen? Irgendwie mit "Exit Sub"?
Und dann noch eine Frage - reine Neugierde:
Ich möchte als letzte Zeile in jeder txt-Datei einen Text einfügen, z. B. "Dieser Stein ist hiermit erledigt."
Wie müsste man da vorgehen?
Vielen Dank und viele Grüsse
Niclaus

Betrifft: AW: VBA code (Zusatz)
von: 1712522.html

Geschrieben am: 11.09.2019 17:47:59
Hallo,
die Einwände stimmen, ich hatte nur die ersten 4 Steine getestet damit die Festplatte nicht "zugemüllt" wird.
Ungeprüft:

Sub F_en()
Stein = 0
Pfad = "c:\temp\"
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) <> Stein Then
Stein = Cells(i, 1)
On Error Resume Next
print #1, "Dieser Stein ist hiermit erledigt."
Close #1
Err.Clear
on error goto 0
Open Pfad & Cells(i, 1) & ".txt" For Append As #1
Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
Else
Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
End If
Next i
close #1
End Sub

mdf

Betrifft: AW: VBA code (Zusatz)
von: 1712560.html

Geschrieben am: 11.09.2019 21:06:08
Hallo Fennec
Vielen Dank! Ich habe mir zwar fast den Kopf zerbrochen. Wie geht das:
print #1, "Dieser Stein ist hiermit erledigt."
steht ganz am Anfang des Makros; in der txt-Datei erscheint diese Zeile trotzdem erst am Schluss. Ich hab's "durchschaut"!
Ich habe dann das Makro ganz am Schluss noch ergänzt:
...
Next i
Print #1, "Dieser Stein ist hiermit erledigt."
Close #1
End Sub

Jetzt wird diese erledigt-Zeile auch in die txt-Datei des letzten Steines eingefügt.
Noch einmal herzlichen Dank! Niclaus

Betrifft: AW: VBA code (Zusatz)
von: 1712577.html
Geschrieben am: 12.09.2019 07:34:38
Danke noch für die Anmerkung.
Ich hab einfach getrixt und am Schluss noch eine fiktive Zeile eingefügt und die dann am Schluss wieder gelöscht.
Lg und schönen Vormittag,
Carina

Bewerten Sie hier bitte das Excel-Portal