Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TXT Datei splitten

TXT Datei splitten
21.03.2007 14:27:00
Andre´
Hallo alle zusammen
Ich habe eine TXT-Datei, wo 508728 Zeilen enthalten, sind mal mehr mal weniger. Ich möchte gern mit einem Makro erreichen, dass die Datei gesplittert wird sodass immer nur 60000 Zeilen in einer neuen TXT-Datei kopiert werden und im selben Verzeichnis unter 1.txt abgespeichert wird. Das selbe soll mit den nächsten 60000 Zeilen (also von 60001 bis 120001) geschehen und unter 2.txt abgespeichert werden u.s.w. Insgesamt müssten für die 508728 Zeilen 9 Dateien erstellt werden.
Hat dafür jemand eine Lösung
Danke im voraus
MFG Andre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT Datei splitten
21.03.2007 15:10:00
Heiko
Hallo Andre,
z.B. so, da ich den Aufbau deiner Datei nicht kenne mußt du mal testen. Bei Nicht Funktion stell mal eine Textdatei mit ein paar Tausend Zeile als Beispiel hier ein.

Sub TextDatSplitten()
Dim strPfad As String, strDatei As String, strhelp As String
Dim arrInput() As String, arrOutput() As String
Dim lngPos As Long, lngHelp As Long, lngZeilen As Long, lngZeilenMax As Long
' Pfad anpassen !!!
strPfad = "H:\EXCEL\EXCEL Privat\Beispiele\Dat_Test_Dateien\"
' Datei Anpassen !!!
strDatei = "Test.txt"
' Anzahl der Gewünschten zeilen anpassen !!!
lngZeilen = 60000
lngPos = 0
Open strPfad & strDatei For Binary As #1
strhelp = Space(LOF(1))
Get #1, , strhelp
arrInput = Split(strhelp, vbCrLf)
Close #1
lngHelp = 0
lngZeilenMax = UBound(arrInput)
For lngPos = LBound(arrInput) To lngZeilenMax
ReDim Preserve arrOutput(lngPos - (lngHelp * lngZeilen))
arrOutput(lngPos - (lngHelp * lngZeilen)) = arrInput(lngPos)
If ((lngPos + 1) Mod lngZeilen = 0) Or lngPos = lngZeilenMax Then
Open strPfad & "TextDat" & lngHelp + 1 & ".txt" For Binary As #1
Put #1, , Join(arrOutput, vbCrLf)
Close #1
lngHelp = lngHelp + 1
Erase arrOutput
End If
Next lngPos
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: TXT Datei splitten
21.03.2007 15:15:00
Rudi
Hallo,

Sub SplitTXTDatei()
Dim intCounter As Integer, strPath As String, strTmp As String, lngCountOfLines As Long
strPath = "c:\temp\test\"
intCounter = 1
Open strPath & "test.txt" For Input As #1
Open strPath & intCounter & ".txt" For Output As #2
Do While Not EOF(1)
Input #1, strTmp
lngCountOfLines = lngCountOfLines + 1
If lngCountOfLines Mod 60000 = 0 Then
Close #2
intCounter = intCounter + 1
Open strPath & intCounter & ".txt" For Output As #2
End If
Print #2, strTmp
Loop
Close 1
Close 2
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: TXT Datei splitten
21.03.2007 15:54:00
Andre´
Hallo,
Vielen Dank!
Heiko, dein Lösung funktioniert prima.
Rudi, dein Code funktioniert nicht wie gewünscht, die Werte aus einer Zeile werden auf 6 weiter Zeilen aufgeteilt.
Nochmals DANK für Eure Beiträge
MFG Andre
AW: TXT Datei splitten
21.03.2007 16:05:02
Rudi
Hallo,
kleiner Fehler. Sorry.

Sub SplitTXTDatei()
Dim intCounter As Integer, strPath As String, strTmp As String, lngCountOfLines As Long
strPath = "c:\temp\test\"
intCounter = 1
Open strPath & "test.txt" For Input As #1
Open strPath & intCounter & ".txt" For Output As #2
Do While Not EOF(1)
Line Input #1, strTmp
lngCountOfLines = lngCountOfLines + 1
If lngCountOfLines Mod 60000 = 0 Then
Close #2
intCounter = intCounter + 1
Open strPath & intCounter & ".txt" For Output As #2
End If
Print #2, strTmp
Loop
Close 1
Close 2
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: TXT Datei splitten
21.03.2007 19:21:00
Andre´
Hallo Rudi,
Danke für Deine Berichtigung, geht zugar noch schneller als der Code von Heiko :-)
MFG Andre
AW: TXT Datei splitten
22.03.2007 07:27:00
Heiko
Hallo Andre,
wie hast du denn getestet, bei mir braucht mein Code (TextDatei 540000 Zeilen) ca. 10 Sekunden und der von Rudi 24 Sekunden.
Text Datei sieht so aus.
12|12353|10|j|Text|Text|Text
12|12354|11|k|Text|Text|Text
12|12355|12|l|Text|Text|Text
12|12356|13|m|Text|Text|Text
12|12357|14|n|Text|Text|Text
12|12358|15|o|Text|Text|Text
12|12345|16|p|Text|Text|Text
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: TXT Datei splitten
22.03.2007 07:52:11
Andre´
Hallo Heiko,
so sieht meine Txt-Datei aus:
hier die 1.Zeile:
1;1.11.2006 00:00:00;2006,00;44,00;11301,00;"INSPECT";"INSPECT";"3D0 971 100 AQ";"HL";"VW21";"KABELSATZ ND";;2,00;"EA";8,26;16,53
hier die 132884 Zeile:
132884;6.12.2006 00:00:00;2006,00;49,00;11301,00;"STOCK";"ST-JC und ST-ECC";"3C0 885 902 T A64";"HEADREST";"VW09";"KOPFSTUETZE,VOLLST N0X";"A";-130,00;"EA";11,55;-1501,50
Meine Text-Datei hat ca. 80 MB, ca. 140 Zeichen pro Zeile und 508.728 Zeilen.
Bei Rudis Code waren es 11 Sekunden und bei Deinen waren es 57 Sekunden.
MFG Andre
Anzeige
AW: TXT Datei splitten
22.03.2007 09:11:00
Heiko
Hallo Andre,
das hat mir ja nun keine Ruhe gelassen.
Also Deine Datenstruktur ca 84MB
Mein Code 35 Sekunden
Rudis Code 130 Sekunden
Wenn die Datei irgendwo im Netz liegt
Mein Code 14 Sekunden
Rudis Code 9 Sekunden
Wenn die Datei auf der Festplatte (C:) liegt.
Und was lernen wir daraus ?
Nichts ist so wie es aussieht und es kommt darauf an wo die Daten liegen ;-)
Gruß Heiko
PS: Rückmeldung wäre nett !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige