Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
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

bestimmte Zeilen aus TXT Datei einlesen

bestimmte Zeilen aus TXT Datei einlesen
Andre´
Hallo alle zusammen,
Ich habe eine TXT Datei https://www.herber.de/bbs/user/65766.txt
wo folgendes ausgelesen werden soll.
Es sollen nur die Daten aus TXT Datei (Pfad: C:\Test.txt) in Array eingelesen werden, wenn folgende Bedingung erfüllt ist:
zwischen der 86 bis 94 Stelle muss etwas enthalten sein außer Minus, Leerzeichen und Zahlen.
Wenn diese Bedingung erfüllt ist dann soll aus der Zeile alles was zwischen
1 Bis 19, 20 bis 44 und 122 bis 132 jeweils enthalten ist eingelesen werden.
Wenn alle Zeilen geprüft wurden, dann soll die Daten wie folgt in das aktuelle Tabellenblatt beginnend ab Zelle D2 eingefügt werden.
Dieses Darstellung zeigt auch, welche Zeilen aus der TXT Datei die Bedingung erfüllt haben. (Zeile 10, 13, und 17)
Tabelle1

 DEF
11 Bis 1920 bis 44122 bis 132
21333-XYZSDDGTZ100
31444 XYZPNLLO200
41555EBSS300


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Die Anzahl der Zeilen ist nicht größer als 65536.
Ich hoffe, dass mir jemand helfen kann.
Vielen Dank im Voraus!
MFG Andre

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: bestimmte Zeilen aus TXT Datei einlesen
11.11.2009 11:08:16
Luschi
Hallo Andre,
irgendetwas kann in der Beschreibung nicht stimmen:
In der Zeile 10 beginnt die Textkette 'SDDGTZ' nicht an Position 20 sondern an Position 86.
Lt. Deiner Tabelle aber an Position 20 bis 44.
Bitte gebe hier Klarheit!
Gruß von Luschi
aus klein-Paris
AW: bestimmte Zeilen aus TXT Datei einlesen
11.11.2009 11:16:23
Andre´
Hallo Luschi,
hast Recht zwischen
1 Bis 19, 86 bis 94 und 122 bis 132 ist gemeint
Tabelle1

 DEF
11 Bis 1986 bis 94122 bis 132
21333-XYZSDDGTZ100
31444 XYZPNLLO200
41555EBSS300


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
MFG Andre
Anzeige
AW: bestimmte Zeilen aus TXT Datei einlesen
11.11.2009 16:11:06
IngGi
Hallo André,
versuch's mal so: Sub Einlesen() Dim vntDaten As Variant ReDim vntDaten(2, 0) Dim vntAusgabe As Variant Dim strZeile As String Dim intZeichen As Integer Dim intFF As Integer Dim lngZeile As Long Dim lngSpalte As Long 'Textdatei zum Einlesen öffnen intFF = FreeFile Open "C:\Temp\Test.txt" For Input As #intFF 'Kopfzeilen der Datei übergehen For lngZeile = 1 To 6 Line Input #intFF, strZeile Next 'lngZeile 'Bis Dateiende zeilenweise einlesen Do Until EOF(intFF) 'Eine Zeile einlesen Line Input #intFF, strZeile 'Prüfen, ob Leerzeile - dann nicht tun If Len(strZeile) >= 94 Then 'Prüfen, ob etwas ausser Blank, Minuszeichen und Ziffern vorhanden For intZeichen = 86 To 94 If Asc(Mid(strZeile, intZeichen, 1)) 32 And _ Asc(Mid(strZeile, intZeichen, 1)) 45 And _ (Asc(Mid(strZeile, intZeichen, 1)) 57) Then 'Drei Spalten an Datenfeld übergeben vntDaten(0, UBound(vntDaten, 2)) = Left(strZeile, 19) vntDaten(1, UBound(vntDaten, 2)) = Mid(strZeile, 86, 9) vntDaten(2, UBound(vntDaten, 2)) = Mid(strZeile, 122, 11) 'Datenfeld um eine Zeile erweitern ReDim Preserve vntDaten(2, UBound(vntDaten, 2) + 1) 'Bearbeitung der Zeile abschließen und zur nächsten Zeile gehen Exit For End If Next 'intZeichen End If Loop 'Textdatei schließen Close #intFF 'Datenfeld transponieren und dabei die Dimensionierung der Zeile 'um die letzte (leere) Position kürzen. 'Das Datenfeld muss für eine direkte Ausgabe in einen Zellbereich 'transponiert werden, da hierbei die Zeilendimension an erster 'Stelle stehen muss. ReDim vntAusgabe(UBound(vntDaten, 2) - 1, 2) For lngZeile = 0 To UBound(vntDaten, 2) - 1 For lngSpalte = 0 To 2 vntAusgabe(lngZeile, lngSpalte) = vntDaten(lngSpalte, lngZeile) Next 'lngSpalte Next 'lngZeile 'Ausgabe auf aktives Tabellenblatt Range("A1") = "1 Bis 19" Range("B1") = "86 Bis 94" Range("C1") = "122 Bis 132" Range("A2").Resize(UBound(vntAusgabe, 1) + 1, _ UBound(vntAusgabe, 2) + 1) = vntAusgabe End Sub Gruß Ingolf
Anzeige
AW: bestimmte Zeilen aus TXT Datei einlesen
11.11.2009 17:47:17
Andre
Hallo Ingolf,
Danke für Deine Antwort, das funktioniert ganz gut.
Ich habe noch:
vntDaten(1, UBound(vntDaten, 2)) = Mid(strZeile, 86, 9) mit 8
und
vntDaten(2, UBound(vntDaten, 2)) = Mid(strZeile, 122, 11) mit 10 getauscht
Ein Problem habe ich noch:
Wenn zwischen 122 bis 132 ein Text steht, dann werden die Leerzeichen zuvor mit eingelesen. Dazu habe ich in der Zeile 10 zwischen 122 bis 132 die "100" durch "uuu" ersetzt.
Siehe Bsp:
Tabelle2

 ABCD
11 Bis 1986 Bis 94122 Bis 132 
21333-XYZ           SDDGTZ         uuu<-- 7 Leerzeichen davor enthalten
31444 XYZ           PNLLO   200 
41555EBSS    300 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Kann man das noch glätten, dass immer linke und rechte Leerzeichen entfernt werden falls vorhanden?
MFG Andre
Anzeige
noch Bsp.
11.11.2009 17:57:18
Andre
Tabelle2

 ABC
11 Bis 19  
21333-XYZ           19normal dürften nur 8 Zeichen enthalten sein
3  die 11 Leerzeichen rechts nach dem Text sollen nicht mit angezeigt werden

Formeln der Tabelle
ZelleFormel
B2=LÄNGE(A2)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Anzeige
mit Trim selber gelöst nochmals Vielen Dank oT
11.11.2009 20:32:54
Andre´

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige