Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

txt Dateien auslesen

txt Dateien auslesen
06.09.2016 13:25:17
Swoopo
Mahlzeit,
ich möchte mittels vba eine Tetdatei auslesen.
und bestimmte Werte ausgeben.
Mal brauche ich die Mittelwerte und mal Werte einzelner Messungen.
Wie bewerkstellige ich das am besten?
Der Aufbau der Datei kann z.B so aussehen.
- - - - - - - - - - - -
Protokoll 1
SN 31211 28,3 l min.
Modus: ISO 14644 (0)
SZ 00:00:05 / MZ 00:01:00
PrgNr: 0 / MessNr: 1
27.08.2016 / 08:21:36
Flow Ok
K/D Groesse Anzahl
K 0.3um 35
K 0.5um 0
K 5.0um 0
- - - - - - - - - - - -
Protokoll 1
SN 31211 28,3 l min.
Modus: ISO 14644 (0)
SZ 00:00:01 / MZ 00:01:00
PrgNr: 0 / MessNr: 2
27.08.2016 / 08:22:37
Flow Ok
K/D Groesse Anzahl
K 0.3um 176
K 0.5um 105
K 5.0um 0
- - - - - - - - - - - -
Protokoll 1
SN 31211 28,3 l min.
Modus: ISO 14644 (0)
SZ 00:00:01 / MZ 00:01:00
PrgNr: 0 / MessNr: 3
27.08.2016 / 08:23:38
Flow Ok
K/D Groesse Anzahl
K 0.3um 35
K 0.5um 35
K 5.0um 0
- - - - - - - - - - - -
Mittelwert aus 3 Messungen
K/D Groesse Anzahl
K 0.3um 82
K 0.5um 47
K 5.0um 0

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: txt Dateien auslesen
06.09.2016 14:04:39
Zwenn
Hallo Swoopo,
wenn alle Deine Text-Dateien identisch aufgebaut sind, würde ich die alle in ein Array mit den Dimensionen [Anzahl zu verarbeitende Protokolle] x [Anzahl Zeilen der Protokolle] einlesen. Anschließend nimmst Du mit Split die letzten drei Zeilen jedes Protokolls auseinander und verrechnest sie der Reihengfolge nach.
Also erst splittest Du Zeile 9 des Protokolls in der ersten Spalte Deines Arrays [Index 0, 8] und schreibst das letzte gesplittete Element in eine eigene Variable. Dann splittest Du Zeile 9 des Protokolls in der zweiten Spalte Deines Arrays [Index 1, 8] und addierst das letzte Element des Split-Arrays zum ersten Wert in der eigenen Variablen.
So fährst Du fort, bis Du alle Protokolle für Zeile 9 durch hast. Die so gebildete Summe in der extra Variablen teilst Du durch die erste Dimension Deines Protokoll-Arrays, also der Anzahl Deiner Protokolle. Genau das gleiche machst Du dann mit Zeile 10 und Zeile 11.
Nimm diesen Vorschlag als groben Algorithmus, wie man es machen kann. Code kann ich dazu aus zeitlichen Gründen leider im Moment nicht liefern. Vielleicht hat jemand anders auch noch eine bessere Idee. Sollten Deine Text-Dateien unterschiedlich aufgebaut sein, dann wäre das eine wichtige Information.
Viele Grüße,
Zwenn
Anzeige
AW: txt Dateien auslesen
06.09.2016 14:52:57
Zwenn
Sehe grade, dass Dein Beispiel der Inhalt einer Datei sein soll richtig? Da sind also mehrere Protokolle drin und auch bereits die errechneten Mittelwerte(?)
Dann ist mein vorheriges Posting natürlich für die Tonne ;-) Wobei ... Man könnte auch die genze Datei in ein Array einlesen und anhand der Trennlinien erkennen, wo ein neues Protokoll anfängt. Diese könnte man auf ein mehrdimensionales Array verteilen und dann hast Du eine Matrix, in der Du direkt auf die Einträge zugreifen kannst. Die Elemente, die mit "K " beginnen, müssten natürlich für den echten Ergebniswert nochmal aufgesplittet werden und dann ist das letzte Element des entstehenden Arrays der Wert, den Du suchst.
Der Teil hinter der letzten Trennlinie ist dann gesondert zu behandeln, da er mit den Mittelwerten eine andere Ergebnismenge enthält.
Anzeige
AW: txt Dateien auslesen
06.09.2016 15:45:51
Swoopo
Danke erstmal für deine Antwort!
Mein Ansatz ist bis jetzt folgender

Dim strLine As String
Dim strArray() As String
Open ThisWorkbook.Path & "\Aufzeichnungen\Prg000_20160827_082136.dat" For Input As #1
Do While Not EOF(1)
Line Input #1, s
p = InStr(s, " ")
If Mid(s, 1, 1) = " " Then
s = Right(s, Len(s) - 1)
End If
strLine = strLine & s
'Debug.Print s
Loop
Close #1
strArray = Split(strLine, "- - - - - - - - - - - -")
strArray = Split(strArray(4), "K")
'Arraywerte alle um 2 verschieben da ich nur die letzten drei Einträge brauche
strArray(0) = strArray(2)
strArray(1) = strArray(3)
strArray(2) = strArray(4)
ReDim Preserve strArray(2)
kann ich die Arrays jetzt Zeilen weise auslesen? Oder bleib mir jetzt nicht anderes übrig als diese wieder zu Splitten?
Anzeige
AW: txt Dateien auslesen
06.09.2016 21:40:07
snb
Einfacher ist:
Mach von alle Dateien 1 grosze
öffne die integrierte Datei in Excel
Sub M_snb()
createobject("wscript.shell").run("cmd /c copy G:\OF\*.csv G:\alles.csv")
workbooks.open "G:\alles.csv"
End Sub

AW: txt Dateien auslesen
06.09.2016 21:56:42
snb
Etwas besser/robuster:
Sub M_snb()
c00 = CreateObject("wscript.shell").exec("cmd /c copy G:\OF\*.csv G:\alles.csv").stdout. _
readall
Workbooks.Open "G:\alles.csv"
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige