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

Textdatei teilweise einlesen??

Textdatei teilweise einlesen?
07.08.2007 10:23:00
Pascal
Hallo zusammen,
vielleicht kann mir ja jemand helfen. Ich habe ein Problem bei dem ich nicht weiterkomme.
Ich möchte eine Textdatei in Excel einlesen. Das bereitet eigentlich keine Probleme, allerdings übersteigt diese Datei die 65.000 Zeilen, die Excel 2000 kann. Es handelt sich um ca 260.000 Zeilen.
Die Liste enthält Kundendaten, die in 3 Bestandteile gegliedert sind. Um diese zu unterscheiden, sind für jeden Kunden in der ersten Zeile des des jeweiligen Teils einmalig Vorzeichen vorangestellt ( "&5"; "&6"; "&8"). Diese wiederholen sich für jeden Kunden.
Meine Frage ist nun:
Ist es möglich beim Einlesen dieser Liste vorab zu selektieren, welches Vorzeichen ich einlesen möchte, bzw. Zeilenbereiche einzulesen? Ich benötige nur die Zeilen, die dem Vorzeichen "&8" zugeordnet werden. Das müssten insgesamt ca 25.000 sein und somit für Office 2k machbar.
Office 2007 ist für mich (noch) keine akzeptable Lösung. Access soll wenn möglich auch vermieden werden, da später auch Anwender damit arbeiten sollen, die sich in Access nicht auskennen.
kleine Zusatzinformation...
die Liste sieht vom Aufbau etwa wie folgt aus:
&5...xyz
.......xyz
.......xyz
&6...xyz
.......xyz
.......xyz
&8...xyz
.......xyz
.......xyz

&5...xyz
.......xyz
.......xyz
Ich möchte somit nur den Bereich der fett darsgestellt ist ins Excel bekommen...
Vielen Dank im Voraus
Grüße

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 10:43:24
Oberschlumpf
Hi Pascal
Versuch es mal hiermit - ungetestet, weil ich keine txt-Datei mit so viel Inhalt habe.

Sub Auslesen()
Dim lstrInhalt As String, loZeile As Long
loZeile = 1
Open "DeinPfad\DeineTxtDatei" For Input As #1 'Pfad + Dateiname anpassen bzw eintragen
Do While Not EOF(1)
Line Input #1, lstrInhalt
If Left(lstrInhalt, 2) = "&8" Then
Range("A" & loZeile).Value = lstrInhalt
loZeile = loZeile + 1
Line Input #1, lstrInhalt
Do Until Left(lstrInhalt, 1) = "&"
Range("A" & loZeile).Value = lstrInhalt
loZeile = loZeile + 1
Line Input #1, lstrInhalt
Loop
End If
Loop
Close
End Sub


Trag diesen Code in ein allgem. Modul einer leeren Exceldatei ein.
Dieses Makro öffnet deine Txt-Datei und liest die erste Zeile ein.
Dann werden so lange nächste Zeilen eingelesen, bis die ersten 2 Zeichen = "&8" entsprechen.
Jetzt wird zuerst die gefundene Zeile in die Exceltabelle in A1 eingetragen.
Dann werden weitere Zeilen aus der Txt-Datei eingelesen und in die nächste freie Zeile in Excel eingetragen, bis eine Txt-Zeile gefunden wird, in der das erste Zeichen = "&" ist.
Jetzt wird erst wieder geprüft, ob es sich um eine Zeile mit "&8" handelt und alles beginnt von vorne.
Hilft das?
Ciao
Thorsten

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 11:25:00
Pascal
Hi,
erst mal vielen Dank für die schnellen Antworten.
@ Thorsten:
Habe das auch gleich mal probiert. Bin zwar momentan noch an den Anfängen, was VBA angeht, aber das scheint mir (sofern ich es nachvollziehen kann) schon logisch zu sein.
Habe den Pfad der Textdatei angepasst und das Makro ausgeführt. Es kam nur kurz die Sanduhr, aber passiert ist nichts...
Vielleicht als Ergänzung:
das "&8" steht immer nur in der ersten Zeile des jeweiligen Bereichs. Es kann also sein, dass pro Bereich 100 Zeilen eingelesen werden müssen, aber nur in der jeweils ersten steht das "&8".

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 11:08:00
Mag
Option Explicit

Sub ttt()
Dim mytext As String, i As Integer, flag As Boolean
Open "u:\test.txt" For Input As #1
While Not (EOF(1))
Input #1, mytext
If Left(mytext, 2) = "&0" Then flag = False
If Left(mytext, 2) = "&1" Then flag = False
If Left(mytext, 2) = "&2" Then flag = False
If Left(mytext, 2) = "&3" Then flag = False
If Left(mytext, 2) = "&4" Then flag = False
If Left(mytext, 2) = "&5" Then flag = False
If Left(mytext, 2) = "&6" Then flag = False
If Left(mytext, 2) = "&7" Then flag = False
If Left(mytext, 2) = "&9" Then flag = False
If Left(mytext, 2) = "&8" Or flag Then
If Not (flag) Then flag = True
i = i + 1
Cells(i, 2).Value = mytext
End If
Wend
Close #1
End Sub


Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 11:19:00
Mag
ähm, ersetze
Input: Line Input
i as Integer: i as Long
Gruss

AW: Textdatei teilweise einlesen?
07.08.2007 11:34:32
Pascal
Hi Mag,
danke für die schnelle Anwort.
Wenn ich das richtig verstanden habe, dann setzt dein Code voraus, dass in der ersten Spalte immer eine Kennzeichnung stehen muss. Bitte korrigiere mich, wenn ich mich irre, bin da noch nicht so fit, was VBA angeht...
Jedenfalls steht die Kennzeichnung immer nur einmal in der ersten Zeile eines Bereichs, um den Anfanh zu kennzeichenen.
Es wird auch lediglich in die Bereiche "&5", "&6" und "&8" unterschieden, das heisst man könnte die anderen streichen oder?
&5...xyz
.......xyz
.......xyz
&6...xyz
.......xyz
.......xyz
&8...xyz
.......xyz
.......xyz

&5...xyz
.......xyz
.......xyz
Wenn ich nur die hier fett dargestellen in ein Tabelklenblatt bekommen will, dann müsste ich also irgendwie eine Funktion haben, die besagt, dass Excel ab "Left "&8"" bis "Left "&5"" Zeilenweise einliest.
Zunächst reicht es mir, wenn er allen in eine Zeile haut, da ich nochmal prüfen muss, wie sich die Zeilen genau trennen lassen...
Gruß
Pascal

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 12:49:35
Mag
Hi,
ja, die anderen Zeilen kannst Du dann weglassen. Es sollte so funktionieren, wie du es brauchst. Es wird solange eingelesen bis ein wechsel von &8 nach z.b. &5 erfolgt; dann erst wieder, wenn &8 auftaucht in den ersten beiden zeichen der eingelesenen zeile. Probier es aus ...
Gruss

AW: Textdatei teilweise einlesen?
07.08.2007 13:04:42
Pascal
Hi Mag,
supi, danke!
Allerdings läuft es noch nicht ganz. Er macht die Textdatei irgendwie nicht auf. Nach wie vor kommt die Sanduhr, als wenn er was machen will, aber es geht nicht ganz.
Jetzt hätte ich allerdings ne andere Idee, was das sein könnte:
Kann das sein, dass mit dem Code, den du mir zur Verfügung gestellt hast nur die jeweils ersten 2 Zeichen einer Spalte geprüft werden?
Ist es möglich, die Prüfung so auszuweiten, dass die ersten 6 Zeichen einer Zeile auf die beiden zeichen geprüft werden? Bzw evtl sogar die ganze Zeile?
Viele Grüße
Pascal

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 13:16:00
Pascal
Hi Mag,
supi, danke!
Allerdings läuft es noch nicht ganz. Er macht die Textdatei irgendwie nicht auf. Nach wie vor kommt die Sanduhr, als wenn er was machen will, aber es geht nicht ganz.
Jetzt hätte ich allerdings ne andere Idee, was das sein könnte:
Kann das sein, dass mit dem Code, den du mir zur Verfügung gestellt hast nur die jeweils ersten 2 Zeichen einer Spalte geprüft werden?
Ist es möglich, die Prüfung so auszuweiten, dass die ersten 6 Zeichen einer Zeile auf die beiden zeichen geprüft werden? Bzw evtl sogar die ganze Zeile?
Viele Grüße
Pascal

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 13:24:00
Mag
.. tja, wenn die sanduhr kommt, dann ließt er sich wahrscheinlich gerade nen wolf. Wie lange sind denn die zeilen und wann kommt in deiner textdatei denn das erste &8 und wohin kopierst du das ergebnis.
wenn du in der ganzen zeile (oder teil davon) suchen willst dann mit der funktion instr (siehe hilfe in excel).
gruss

AW: Textdatei teilweise einlesen?
07.08.2007 13:28:27
Mag
... mach dir einen zähler. wenn z.b. 2mal &8 gefunden wurde, dann mache ein exit sub und betrachte dir das ergebnis. bei 250000 zeile dauert es ja etwas, bis zum ende; erst dann wird das ergebnis ja sichtbar.
gruss

AW: Textdatei teilweise einlesen?
07.08.2007 13:36:00
Pascal
Hi Mag,
habs schon hinbekommen. Ich habe einfach "mytext, 2" durch "mytext, 6" ersetzt und dann dem & noch 4 Leerzeichen vorangestellt. Jetzt läuft es so wie es ausschaut einwandfrei :-)
Nächster Step wird die Spaltenaufteilung werden. Sind jetzt noch ca 23.000 Zeilen übrig. Da muss ich jetzt erst mal die Gemeinsamkeiten herausstellen :-(
Viele Grüße
Pascal

Anzeige
AW: Textdatei teilweise einlesen?
07.08.2007 13:42:28
Mag
... tja, das konnte ja auch keiner wissen, dass &x nicht am anfang steht, sondern noch leerzeichen davor sind ...
Gruss

AW: Textdatei teilweise einlesen?
07.08.2007 13:44:00
Pascal
Hmm, habs leider auch erst gemerkt, als der rest nicht lief... Hat mir aber auf jedenfall sehr geholfen. Alleine hätte ich da auf keinen Fall hinbekommen!!

AW: Textdatei teilweise einlesen?
08.08.2007 10:16:00
Pascal
Hallo Mag,
sorry, wenn ich nerve, aber ich hätte da noch ne kleine Frage bezüglich der Einleseproblematik.
In der 5. Zeile nach dem "&8" befinden sich am rechten Rand der Zeile 7-stellige Kundennummern. Um diese immer an der gleichen Stelle zu haben, wenn ich mich an die Spaltentrennung begebe, möchte ich, dass aus dieser Zeile ausschliesslich die Kundennummer eingelesen wird.
Die rechten 7 Zeichen einzulesen ist nicht das Problem, aber wie kann ich dem Makro sagen, dass es in jeder 5. Zeile nach dem "&8" nur die rechten 7 Zeichen nimmt?
Wäre nett, wenn du mir helfen könntest.
Gruß
Pascal
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige