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 Submfg
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 Submdf
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 SubJetzt wird diese erledigt-Zeile auch in die txt-Datei des letzten Steines eingefügt.
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