Herbers Excel-Forum - das Archiv

textteile einlesen

Bild

Betrifft: textteile einlesen
von: Frank

Geschrieben am: 18.12.2006 11:47:28
Hallo Excelfreunde,
Ich möchte eine Textdatei mit mehr als 70000 Zeilen in Excel einlesen.
Gibt es mit VBA die Möglichkeit nur bestimmte Zeilen einlesen die ich später brauche. zB.*Besucher* und *Dauer* und *bis* sind Zeilen wo diese Zeichen vorkommen. Es kommen aber noch mehr dazu die ich mir erweitern würde.
Habe im Forum gesucht aber leider nichts passendes gefunden.
Die Zeichen später zu löschen, macht bei der Menge Probleme. Da hatte ich was im Forum gefunden.
Besten Dank im Voraus
Gruß Frank
Bild

Betrifft: AW: textteile einlesen
von: haw

Geschrieben am: 18.12.2006 13:33:29
Hallo Frank
z.B. so:
Sub Einlesen()
Dim stxt$
Open "C:\Testtest.txt" For Input As #1
Do Until EOF(1)
Line Input #1, stxt
If InStr(stxt, "Besucher") Or InStr(stxt, "Dauer") Then
efz = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(efz, 1).Value = stxt
End If
Loop
Close iFile
End Sub

Es werden alle Zeilen eingelesen, die eines der beiden Wörter beeinhalten.
Gruß Heinz
Bild

Betrifft: AW: textteile einlesen
von: Frank

Geschrieben am: 19.12.2006 11:35:48
Danke für Deine Mühe Heinz,
es funktioniert soweit ganz gut.
Für meine Auswertung kann ich es nicht nutzen.
Es werden z.B. alle Zeilen wo *Besucher* enthalten ist hinterein ander eingelesen werden und dann die Anderen.
Ich bräuchte es so *Besucher* dann nächste Zeile *Dauer* und so weiter.
Also in der gleichen Reihenfolge wie sie in den Textblöcken vorkommen.
Gruß Frank
Bild

Betrifft: AW: textteile einlesen
von: haw

Geschrieben am: 19.12.2006 11:50:23
Hallo Frank,
das tut es ja auch.
Es wird für jede Zeile geprüft, ob in der Zeile der String "Besucher" ODER "Dauer" vorkommt, dann wird die Zeile eingetragen.
Sub Einlesen()
Dim stxt$
Open "C:\Testtest.txt" For Input As #1
Do Until EOF(1)
'Jede Zeile wird der Variablen stxt zugewiesen
Line Input #1, stxt
' wenn der eine oder andere String in stxt vorkommt, dann ...
If InStr(stxt, "Besucher") Or InStr(stxt, "Dauer") Then
efz = Cells(Rows.Count, 1).End(xlUp).Row + 1
'wird er in die nächste freie Zeile der aktiven Tabelle geschrieben
Cells(efz, 1).Value = stxt
End If
Loop
Close iFile
End Sub

Gruß Heinz
Bild

Betrifft: AW: textteile einlesen
von: Frank

Geschrieben am: 20.12.2006 10:29:14
Hallo Heinz,
Du hattest Recht, es hat geklappt. Ich sagte ja es kommen noch mehrere Stings dazu.
Zu jeden Besucher kommt auch der String Dauer. Nun hatte ich 20 Besucher eingelesen und über 1000nte Dauer von - bis. Habe ich übersehen, mein Fehler.
Nochmals Danke für Deine Hilfe.
Wünsche Dir ein schönes Weihnachtsfest,
Gruß Frank
 Bild
Excel-Beispiele zum Thema "textteile einlesen"
Tabellenblattnamen in ein Listenfeld einlesen Gefilterte Daten in eine ListBox einlesen
Einlesen von Zellinhalten in Variablen 1000 Arbeitsblätter aus 1000 Arbeitsmappen einlesen
Tabellenblattnamen in eine ListBox einlesen Text aus UserForm-Textbox in Variable einlesen
Blätter in ComboBox-Feld einlesen und auswählen Dateinamen in Tabelle einlesen
Namen einer Arbeitsmappe einlesen