Hallo zusammen!
Ich suche eine Möglichkeit, große Textdateien (Messdaten) für die Bearbeitung in Excel automatisiert in mehrere Dateien zu zerlegen.
Hat eine Messdatei (Text) mehr als die in Excel zulässige Zeilenzahl (dieser Parameter sollte variabel sein) soll sie geteilt werden. Möglicherweise ist eine Teilung mehrfach erforderlich.
Geteilt werden soll darüber hinaus an bestimmten Stellen (nämlich am Anfang einer Messung, die durch eine bestimmte Zeichenfolge angekündigt wird: // name).
Da die Bearbeitung von Windows-Anwendern erfolgt, würde ich gerne auf dieser Plattform bleiben. Gibt es für diese Aufgabe eine Lösung in VBA, VBSript, o.ä.?
Vielen Dank für Eure Unterstützung
Hallo,
Excel hast Du ja schon, das würde ich dann dafür auch verwenden.
Mangels Daten ungetestet, aber ich glaube nicht, daß ich größere Fehler eingebaut habe. Sicher geht es auch noch eleganter, so ist es mir aber spontan eingefallen … 
Private Sub Aufteilen()
Dim QuellDatei As String
Dim ZielDatei As String
Dim Zeilengrenze As Integer
Dim ff As Integer, i As Integer, k As Integer, n As Integer
Dim Arr() As String, Txt As String
QuellDatei = "C:\Quelle.txt"
ZielDatei = "C:\Ziel"
Zeilengrenze = 100
ff = FreeFile
Txt = Space(FileLen(QuellDatei))
Open QuellDatei For Binary As #ff
Get #ff, , Txt
Close #ff
Arr = Split(Txt, vbCrLf)
For i = 0 To UBound(Arr) Step Zeilengrenze
n = n + 1
Open ZielDatei & Right("0000" & CStr(n), 5) & ".txt" For Output As #ff
For k = 0 To Zeilengrenze
If i + k
Gruß Rainer
Hallo Rainer,
vielen Dank erst Mal. Bislang hab ich mich im wesentlichen auf Tabellenblättern bewegt. Deshalb werd ich ein bisschen brauchen um den Code zu verstehen. Komm ggf. noch mal auf Dich zu.
LG Michel
Moin, moin,
es muss ja nicht immer gleich selber programmieren sein. Vielleicht hilft dieses Tool hier auch weiter.
Gruß
Hallo Michel,
Ich suche eine Möglichkeit, große Textdateien (Messdaten) für
die Bearbeitung in Excel automatisiert in mehrere Dateien zu
zerlegen.
welche Excelversion?
lade mal eine Beispiel-.txt hoch. Sie muß nicht irre lang sein, So der erste Zeilenblock bis paar Zeilen unterhalb von „// name“.
Mit Excel-Vba kann man sie einlesen und dann aufteilen. Wie soll das aufteilen geschehen?
Mna kann die durch „// name“ geteilten Blöcke der Datei nacheinander in die Spalten A:C, D:F, G:I, usw schreiben lassen bis alle Spalten voll sind, dann in einem neuen Blatt weitermachen.
Oder pro Block ein neues Blatt anlegen.
Oder pro Block eine neue mappe anlegen.
Wie soll es also sein?
Hochladen der .txt mit fileupload, s. FAQ:2606
Gruß
Reinhard
Hallo Reinhard,
die Textdatei sind Messdaten. Die Anzahl der Messpunkte variiert. Ebenso die Anzahl der Messungen in einer Datei.
Für die weitere Bearbeitung gibt es bereits Routinen, die beibehalten werden sollen.
Wegen der Handlichkeit sollen soviele Messungen wie möglich in einer (Textdatei) erhalten bleiben.
Was ich Suche ist also eine Möglichkeit, die Textdatei vor der weiteren Bearbeitung durch bereits vorhandene Makros die Textdatei in möglichst grosse Stücke zu zerhacken. Wegen der weiteren Bearbeitung ist ein ändern der Spalten wahrscheinlich ungünstig.
Zweite Bedingung für das Zerlegen ist, dass die Teilung so erfolgen soll, dass alle Teile nur komplette Messreihen enthalten sollen. Also jede Datei soll mit den Orginalzeilen //name (usw.) der Ursprungsdatei beginnen.
Upload hat von hier aus nicht funktioniert. Werd es heute Abend von zu Hause aus versuchen.
Schon mal recht herzlichen Dank für Deine Rückmeldung.
Mit freundlichen Grüssen, Micha
Hallo DampfHans,
vielen Dank für den Hinweis. Das Tool hatt ich auch schon auf meinem Sucher. Das Problem ist, dass ich neben der Dateigrösse auch den Anfang einer Messreihe finden muss, die jeweils mit //name … beginnt. Ich benötige also (mindestens) zwei Bedingungen zum Trennen: Zeilenzahl und String. Erschwerend kommt hinzu, dass die Anzahl der Messpunkte stets variiert, ich also keine Zeilen zählen kann.
Habe schon darüber nachgedacht, erst nach Größe zu Teilen, und dann nach Messungsanfang (String) zu suchen.
Vielen Dank für Deine Rückmeldung.
Mit freundlichen Grüssen, Micha
Hallo Micha,
leider hast du einige nachfragen von mir nicht klar beantwortet 
Ich stelle die ja nur um DIR besser und zielgerichteter helfen zu können.
die Textdatei sind Messdaten. Die Anzahl der Messpunkte
variiert. Ebenso die Anzahl der Messungen in einer Datei.
Ja, hatte ich auch so verstanden.
Für die weitere Bearbeitung gibt es bereits Routinen, die
beibehalten werden sollen.
Welche Art von Routinen, Excel-Makros?
In die kann man doch Split-Routinen für die Datei mit aufnehmen.
Wegen der Handlichkeit sollen soviele Messungen wie möglich in
einer (Textdatei) erhalten bleiben.
Nochmals, warum eine RiesenTextdatei erst in mehrere textdateien umwandeln und die dann nacheinander mit Excel wieder öffnen/einlesen, warum nicht gleich mit Excel-Vba splitten und auf Blätter/Mappen aufteilen?
Was ich Suche ist also eine Möglichkeit, die Textdatei vor der
weiteren Bearbeitung durch bereits vorhandene Makros die
Textdatei in möglichst grosse Stücke zu zerhacken. Wegen der
weiteren Bearbeitung ist ein ändern der Spalten wahrscheinlich
ungünstig.
Spaltenänderung war nur eine Idee von mehreren. Ich will ja nicht wissen was du nicht willst sondern das was du willst innerhalb vn Excel.
Zweite Bedingung für das Zerlegen ist, dass die Teilung so
erfolgen soll, dass alle Teile nur komplette Messreihen
enthalten sollen.
Dann habe ich das richtig verstanden, soviel Zeilenblöcke angeführt mit // Name in ein Blatt packen wie es die Zeilenanzahl des Blattes erlaubt.
Upload hat von hier aus nicht funktioniert. Werd es heute
Abend von zu Hause aus versuchen.
Okay, manche Firmen blockieren warum auch immer uploads.
Für mich Paranoia oder Unsicherheit der ITs.
Als ob du wenn du da schon Daten klaust o.ä. nicht auch andere Möglichhkeiten hättest diese Daten rauszuschmuggeln.
Gruß
Reinhard
Hallo Reinhard,
sorry, anscheinend bin ich zum uploaden zu dämlich. Wollte mich bei Doktus anmelden. Lief auf 'nen Fehler. Wollte Dateien uploaden (*txt und *xls) hing sich auf. Bei jedem neuen Versuch zeigt mir Doktus nun den aufgehängten Job an… Gibt es ggf. noch 'ne andere Seite?
Dass ich einige Deiner Fragen nicht beantwortet habe liegt nicht am bösen Willen sondern an meiner beschränkten Auffassungsgabe.
Also wir verwenden auf den alten Gurken Excel 2002. Neue Rechner werden aber mit 2003 ausgeliefert. Und zu Hause verwende ich 2000. Das scheint aber alles einigermassen zu funzen.
So sieht die Textdatei aus (Kopf):
// name: #1; ident: 25.03.09,13:10:24,Achse 1
// operation ID: esk_0297-0311_q66-2-00000297-esk-E-25.03.09
// stroke[mm]; force[kN]; time[s]
101.026 0.05 0.0000
101.188 0.02 0.0015
101.350 0.02 0.0040
101.505 0.00 0.0060
… hier ca. 2000 bis 5000 Messpunkte (3 Werte), dann …
// name: #2; ident: 25.03.09,13:14:16,Achse 1
// operation ID: esk_0297-0311_q66-2-00000298-esk-E-25.03.09
// stroke[mm]; force[kN]; time[s]
101.065 0.00 0.0000
101.235 0.05 0.0015
101.397 0.05 0.0035
…
Wenn Du mir 'ne passende Seite sagst, kann ich auch die alten Makros mal hochladen.
Bis dahin herzlichen Dank und freundliche Grüsse, Micha
Hallo Reihnard,
hast geschrieben, dass Du grad keinen Kopf frei hast. Also, es eilt net. Bin mit dem upload bei File-Upload erfolgreich geworden. Geht das auch mit Excel? Dann könnt ich Dir das Orginal mal hochladen. Die Routinen sind leider nicht die aktuellsten, die hab ich heut vergessen. Aber das Prinzip wird, glaube ich trotzdem klar.
Messdaten:
http://www.file-upload.net/download-3446026/dddddd.t…
Module zur weiterbearbeitung:
http://www.file-upload.net/download-3446025/Modul1.t…
http://www.file-upload.net/download-3446027/Modul_te…
Gruss und schönes Wochenende, Micha
Hallo Micha,
hast geschrieben, dass Du grad keinen Kopf frei hast. Also, es
eilt net. Bin mit dem upload bei File-Upload erfolgreich
geworden. Geht das auch mit Excel? Dann könnt ich Dir das
Orginal mal hochladen.
? geht das auch mit Excel, man kann da genauso auch xls-Dateien hochladen bei file-upload.
Messdaten:
http://www.file-upload.net/download-3446026/dddddd.t…
Module zur weiterbearbeitung:
http://www.file-upload.net/download-3446025/Modul1.t…
http://www.file-upload.net/download-3446027/Modul_te…
Ich habe mal eben Code geschrieben und an der txt-Datei getestet.
Bei Const PfadDatei As String = …
mußt du deinen Pfad+Dateinamen eintragen.
Gruß
Reinhard
Option Explicit
Sub Aufteilen()
Dim Einlesen As String, FF As Long, Teil, Max As Long, Zei As Long
Dim T As Integer, N, Satz, S, Z
Const PfadDatei As String = "c:\test\kwdddddd.txt"
On Error GoTo hell
Application.ScreenUpdating = False
FF = FreeFile
Einlesen = Space(FileLen(PfadDatei))
Open PfadDatei For Binary As #FF
Get #FF, , Einlesen
Close #FF
Workbooks.Add
Max = Rows.Count
Zei = 1
Teil = Split(Einlesen, "// name")
For T = 1 To UBound(Teil)
Satz = Split(Teil(T), Chr(13) & Chr(13) & Chr(10))
If UBound(Satz) + Zei \> Max Then
With ActiveWorkbook.Worksheets(1)
.Columns(1).TextToColumns Destination:=.Range("A1"), \_
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Tab:=True, \_
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
End With
Zei = 1
Workbooks.Add
End If
With ActiveWorkbook.Worksheets(1)
For S = 0 To UBound(Satz)
.Cells(Zei + S, 1) = Satz(S)
Next S
Zei = .Cells(Rows.Count, 1).End(xlUp).Row + 1
End With
Next T
With ActiveWorkbook.Worksheets(1)
.Columns(1).TextToColumns Destination:=.Range("A1"), \_
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Tab:=True, \_
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
End With
hell:
If Err.Number 0 Then MsgBox Err.Number & vbCr & Err.Description
Application.ScreenUpdating = True
End Sub
Hallo Reinhard,
herzlichen Dank. Funzt super. Auch von meinem Kollegen herzlichen Dank. Das hat uns sehr geholfen.
LG Micha