txt.Datei erzeugen (altes Thread)
21.03.2022 13:38:58
Herrmann
ich möchte (wieder) ein altes Thread öffnen, um eine txt.-Datei erstellen zu können, welches in ein anderes Tool eingelesen wird. Dank UweD konnte ich mit seinem Makro arbeiten, jedoch steht ein Update bevor und ich muss das Makro nun dementsprechend anpassen.
alte Thread: 1. https://www.herber.de/forum/cgi-bin/callthread.pl?index=1873378
2. https://www.herber.de/forum/cgi-bin/callthread.pl?index=1874277
Die erzeugte txt.-Datei hat eine bestimmte (ich nenn es mal) "Formatierung". Zunächst war es nur eine Formatierung, die sich auf vier erweitern wird (leider und für mich persönlich sehr nervig...)
Ich habe versucht UweD's Makro umzuformen, jedoch hatte ich Schwierigkeiten die verschiedenen Formatierungsarten in eins zu kombinieren.
Die Excel-Beispieldatei: https://www.herber.de/bbs/user/151934.xlsm
(Der Button funktioniert zwar, basiert aber nur auf die eine Formatierung)
Die txt.-Beispieldatei: https://www.herber.de/bbs/user/151935.txt
(Genau diese txt.Datei soll das neue Makro erzeugen können)
Die Formatierung soll sich auf die Kennnummer beziehen (s. O5, U5, AD5 und AG5)
Aufgabe 1 bis 5 sind immer fix positioniert und bleiben unverändert.
Aufgabe 1 und 2 haben die gleiche Formatierung (6661 und 6662).
Die erzeuge Ausgabe soll also wie in der txt.-Beispieldatei lauten:
RRNST000000065077608 21022022000002H 6661 Homeoffice * *
Von UweD und mein angepasstes Makro:
Sub TT()
...
Wert = "RR" '1) fix
Wert = Wert & "N" '2) fix
Wert = Wert & "ST" '3) fix
Wert = Wert & Format(Nr + 1, "00000000") '4) laufende Nummer
'---
LTMP = 10
TMP = Left(Range("D2"), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '5) Personalnummer plus Leerzeichen Max 10
'---
Wert = Wert & Format(Cells(i, 2), "DDMMYYYY") '6) Datum
Wert = Wert & Format(Arr08(A), "000000") '8) Stunde
Wert = Wert & "H " '9) fix plus Leerzeichen
'---
LTMP = 6
TMP = Left(Cells(Z1 - 1, j), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '13) Aufgabe +Leerzeichen Max 6 Zeichen
'---
LTMP = 39
TMP = Left(Arr16(A), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng) & "*"
Wert = Wert & TMP & Leer '16) Kommentar immer 39 +*
'---
Wert = Wert & " *" '17) fix immer 14 Zeichen
Print #1, Wert
Nr = Nr + 1 'neue Laufnummer
Aufgabe 3 und 5 haben die gleiche Formatierung (1111 und 1112).
Die erzeuge Ausgabe soll also wie in der txt.-Beispieldatei lauten:
LENST000000025077608 2002202220022022000004H L72 1112 000000000022Pflege *
Von UweD und mein angepasstes Makro:
Sub TT()
...
Wert = "LE" '1) fix
Wert = Wert & "N" '2) fix
Wert = Wert & "ST" '3) fix
Wert = Wert & Format(Nr + 1, "00000000") '4) laufende Nummer
'---
LTMP = 10
TMP = Left(Range("D2"), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '5) Personalnummer plus Leerzeichen Max 10
'---
Wert = Wert & Format(Cells(i, 2), "DDMMYYYY") '6) Datum
Wert = Wert & Format(Cells(i, 2), "DDMMYYYY") '7) Datum2
Wert = Wert & Format(Arr08(A), "000000") '8) Stunde
Wert = Wert & "H " '9) fix plus Leerzeichen
Wert = Wert & "L72 " '12) fix plus Leerzeichen
'---
LTMP = 10
TMP = Left(Cells(Z1 - 1, j), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '13) Aufgabe +Leerzeichen Max 10 Zeichen
'---
Hier weiß ich leider nicht, wie ich die "000000000022" erzeuge. Das Feld soll 12 Zeichen betragen mit führenden Nullen. Also wenn wir wie bei der Excel-Beispieldatei 0022 eingetragen haben soll es davor automatisch soviele führende Nullen erzeugen, bis wir auf 12 Zeichen kommen. In dem fall wären es 8 Nullen.
'---
LTMP = 23
TMP = Left(Arr16(A), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng) & "*"
Wert = Wert & TMP & Leer '16) Kommentar immer 23 +*
'---
Print #1, Wert
Nr = Nr + 1 'neue Laufnummer
Aufgabe 3 soll ignoriert werden. Das ist im Makro in der Excel-Beispieldatei eingebaut.
Ab Aufgabe 6 ist entweder die Formatierung die UweD erstellt hat, indem Fall die Aufgabe 7 mit der Kennnummer 65879644862:
RNNST000000095077608 2102202221022022000002H APL-XX000004L72 65879644862 0055 Kundenabnahme*
oder..
bei Aufgaben die eine Kennnummer mit R. oder L., jegliche Art von Buchstabe-Punkt, soll die Formatierung wie folgt lauten:
LPNST000000045077608 2002202220022022000008H L72 R.2019-AK-CH-00 diverse *
Hier habe ich das Makro ebenfalls angepasst:
Sub TT()
..
Wert = "LP" '1) fix
Wert = Wert & "N" '2) fix
Wert = Wert & "ST" '3) fix
Wert = Wert & Format(Nr + 1, "00000000") '4) laufende Nummer
'---
LTMP = 10
TMP = Left(Range("D2"), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '5) Personalnummer plus Leerzeichen Max 10
'---
Wert = Wert & Format(Cells(i, 2), "DDMMYYYY") '6) Datum
Wert = Wert & Format(Cells(i, 2), "DDMMYYYY") '7) Datum2
Wert = Wert & Format(Arr08(A), "000000") '8) Stunde
Wert = Wert & "H " '9) fix plus Leerzeichen
Wert = Wert & "L72 " '12) fix plus Leerzeichen
'---
LTMP = 24
TMP = Left(Cells(Z1 - 1, j), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng)
Wert = Wert & TMP & Leer '13) Aufgabe +Leerzeichen Max 24 Zeichen
'---
LTMP = 21
TMP = Left(Arr16(A), LTMP)
Lng = Len(TMP)
Leer = WF.Rept(" ", LTMP - Lng) & "*"
Wert = Wert & TMP & Leer '16) Kommentar immer 21 +*
'---
Print #1, Wert
Nr = Nr + 1 'neue Laufnummer
Also besteht die Herausforderung (für mich) darin, diese Makros zu kombinieren, so dass es je nach Kennnummer in der Zeile 5 die Formatierung als txt.-Datei erzeugt.
Bitte beachtet, dass ich bei den angepassten Makros die Vorgaben weg gelassen habe, damit es hier nicht ein längerer Text, als es schon ist, wird. :)
Ich hoffe auf eure Unterstützung und bedanke mich im Voraus für eure Bemühungen. Ich hoffe ich konnte mein Problem verständlich erklären (bitte dafür auch Thread 1 und 2 beachten)
LG