Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Txt Datei in mehrere splitten

Txt Datei in mehrere splitten
Andre´
Hallo alle zusammen,
ich möchte aus einer freiwählbaren TXT Datei folgendes realisieren:
Der Name ist z.B. A123_456.txt
Steht an der Stelle zwischen 162 bis 183TEST 1 2 3 4 5 6 7 89 (kann auch kleingeschrieben sein)
dann sollen diese Zeilen aus der TXT Datei gelöscht werden.
Die TXT soll unter dem gleichen Namen im selben Verzeichnis abgespeichert werden.
Die Zeilen, die aus der TXT Datei gelöscht wurden, sollen im selben Verzeichnis
mit dem Namen der ausgewählten TXT und einem Zusatz so:
A123_456_Test_C1AA.txt
gespeichert werden.Aber es könnten mehr Dateien werden:
wenn zwischen der Stelle 14 und 37 mitunter ein unterschiedlicher Text vorhanden ist.
Für die Anzahl der Unterschiede muss jeweils eine separate TXT Datei erzeugt werden im selben Verzeichnis.
Der Text zwischen der Stelle 14 und 37 soll jeweils als Dateiname angehängt werden.
Bsp: aus Zeile 14 Stelle 14 bis 37
C1AD
Dabei soll der Name der Datei nach wie folgt lauten:
A123_456_Test_C1AD.txt
Im angehängten Bsp.: https://www.herber.de/bbs/user/72081.txt
müssten die Zeilen: 5, 8, 12, und 14 gelöscht werden und
drei neue TXT Dateien erstellt werden mit dem Namen:
A123_456_Test_C1AA.txt
A123_456_Test_C1AC.txt
A123_456_Test_C1AD.txt
Der Aufbau der einzelnen TXT Dateien (Format) soll genau so sein wie die ausgewälte Datei.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus!
MFG Andre
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Txt Datei in mehrere splitten
28.10.2010 15:57:52
Christian
Hallo Andre,
im Prinzip so:
- öffne txt-Datei
- lese die Zeilen in ein array (arrQuelle)
- schließe txt-Datei
- Durchlaufe das array und prüfe ob an Stelle 162 ff der gesuchte String steht
- wenn ja, dann extrahiere den Teil an der Stelle 17-37
und erzeuge aus dem Namen der Quelldatei und diesem extrahierten Teilstring den neuen Dateinamen.
Öffne diese Datei und schreibe den Array-Eintrag (hinten anhängen - append)
- wenn nein, dann schreibe den Array-Eintrag in eine andere Datei (z.B. tmp.txt)
zum Schluss kannst du die Quelldatei löschen und der tmp-Datei den Namen der Quelldatei geben.
Gruß
Christian
Anzeige
AW: Txt Datei in mehrere splitten
28.10.2010 16:43:35
Andre´
Hallo Christian,
erstmals Danke für Deine Antwort.
Ich habe gemerkt, als Du richtig erkannt hast Stelle 17-37, dass Stelle 14-37 verkehrt von mir dargestellt wurde.
Ich denke, dass Dein Vorschlag funktionieren könnte.
Hast Du evt. eine Makrolösung?
Das wäre super!
MFG Andre
Anzeige
AW: Txt Datei in mehrere splitten
29.10.2010 10:58:09
Christian
na gut, ein Ansatz zum testen ...
Option Explicit
Sub TestIt()
Dim intFile%, i&
Dim strTxt$, strLine$
Dim strName$, strDstFile$, strTmpFile$
Dim vntTxt
Const strSRCFILE = "D:\72081.txt"
strTmpFile = "D:\TmpTest.txt"
strName = Left(strSRCFILE, Len(strSRCFILE) - 4)
intFile = FreeFile
Open strSRCFILE For Binary Access Read As #intFile
i = LOF(intFile)
strTxt = String(i, 0)
Get #intFile, , strTxt
Close #intFile
vntTxt = Split(strTxt, vbCrLf)
For i = 0 To UBound(vntTxt)
strLine = vntTxt(i)
If Len(strLine) > 182 Then
If LCase(Mid(strLine, 162, 21)) = "test 1 2 3 4 5 6 7 89" Then
strDstFile = strName & "_" & Trim(Mid(strLine, 17, 20)) & ".txt"
intFile = FreeFile
Open strDstFile For Append As #intFile
Print #intFile, strLine
Close #intFile
Else
intFile = FreeFile
Open strTmpFile For Append As #intFile
Print #intFile, strLine
Close #intFile
End If
End If
Next
'    Kill strSRCFILE
'    Name strTmpFile As strSRCFILE
strTxt = ""
Erase vntTxt
End Sub

... löschen der Quell-Datei und umbenennen der Tmp-Datei hab ich hier mal auskommentiert.
Christian
Anzeige
AW: Txt Datei in mehrere splitten
29.10.2010 13:27:56
Andre´
Hallo Christian,
Vielen DANK!!! funktioniert prima :-)))
Ein schönes Wochenende
MFG Andre
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Txt Datei in mehrere splitten


Schritt-für-Schritt-Anleitung

  1. Öffne die .txt Datei: Verwende den VBA-Editor in Excel, um ein neues Modul zu erstellen und die .txt Datei zu öffnen.

  2. Lese die Zeilen in ein Array: Nutze die Split-Funktion, um den Inhalt der Datei zeilenweise in ein Array zu speichern.

    Dim vntTxt
    vntTxt = Split(strTxt, vbCrLf)
  3. Durchlaufe das Array: Überprüfe jede Zeile, ob der gesuchte Text (z.B. "test 1 2 3 4 5 6 7 89") an der richtigen Stelle steht.

  4. Erzeuge neue Dateien: Wenn der Text gefunden wird, extrahiere den Teil des Textes, der als Dateiname dienen soll, und speichere die Zeile in einer neuen Datei.

    strDstFile = strName & "_" & Trim(Mid(strLine, 17, 20)) & ".txt"
  5. Schreibe in die neue Datei: Verwende die Print-Funktion, um die Zeilen in die neue Datei zu schreiben.

  6. Lösche die Quelldatei: Am Ende kannst du die ursprüngliche Datei löschen und die temporäre Datei umbenennen.


Häufige Fehler und Lösungen

  • Fehler: Die Datei wird nicht gefunden
    Lösung: Überprüfe den Pfad zur .txt Datei und stelle sicher, dass er korrekt ist.

  • Fehler: Array-Index außerhalb des Bereichs
    Lösung: Achte darauf, dass das Array nicht leer ist, bevor du darauf zugreifst.

  • Fehler: Schreibrechte
    Lösung: Stelle sicher, dass du Schreibrechte im Zielverzeichnis hast, wo die neuen .txt Dateien gespeichert werden.


Alternative Methoden

Falls du keine VBA-Lösung bevorzugst, kannst du auch externe Tools oder Skripte verwenden, um eine .txt Datei zu splitten. Programme wie Python oder PowerShell bieten einfache Möglichkeiten, um Textdateien zu bearbeiten und zu splitten. Hier ein Beispiel in Python:

with open('input.txt', 'r') as file:
    lines = file.readlines()

for line in lines:
    if "TEST 1 2 3 4 5 6 7 89" in line:
        new_filename = f"{line[17:37].strip()}.txt"
        with open(new_filename, 'w') as new_file:
            new_file.write(line)

Praktische Beispiele

  1. Beispiel 1: Du hast die Datei A123_456.txt und möchtest alle Zeilen löschen, die den Text "TEST 1 2 3 4 5 6 7 89" enthalten. Die neuen Dateien werden dann entsprechend dem extrahierten Text benannt.

  2. Beispiel 2: Wenn deine Quelldatei D:\72081.txt ist, kannst du die oben genannten Schritte in deinem VBA-Skript verwenden, um die gewünschten Zeilen zu filtern und neue .txt Dateien zu erstellen.


Tipps für Profis

  • Nutze die Option Explicit Deklaration: Damit stellst du sicher, dass alle Variablen deklariert sind, was Fehler verhindert und den Code leserfreundlicher macht.

  • Testen in kleinen Schritten: Führe deinen Code schrittweise aus, um sicherzustellen, dass jede Funktion wie gewünscht funktioniert.

  • Backup der Originaldatei: Bevor du die Quelldatei bearbeitest, mache immer eine Sicherung, um Datenverlust zu vermeiden.


FAQ: Häufige Fragen

1. Was ist eine .txt-Datei?
Eine .txt-Datei ist eine einfache Textdatei, die unformatierte Textinformationen speichert. Sie kann mit jedem Texteditor geöffnet werden.

2. Wie kann ich eine CSV-Datei splitten?
Um eine CSV-Datei zu splitten, kannst du ähnliche Methoden wie bei .txt Dateien verwenden, indem du die Datei zeilenweise einliest und die gewünschten Zeilen in neue Dateien schreibst.

3. Was ist der Unterschied zwischen einer .txt-Datei und einer CSV-Datei?
Eine .txt-Datei speichert reinen Text, während eine CSV-Datei strukturierte Daten in einem durch Kommas getrennten Format speichert, das oft für Tabellen genutzt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige