Herbers Excel-Forum - das Archiv

Begriff in Textdatei suchen und importieren

Bild

Betrifft: Begriff in Textdatei suchen und importieren
von: Florian Hannemann

Geschrieben am: 09.01.2007 15:57:15
Hallo,
Ich habe folgendes Problem.
Ich muss in einer Datei mit der Dateiendung .asc (lässt sich wie textdatei öffnen) alle Begriffe suchen die zwischen BEGIN_GROUPS und END_GROUPS stehen und in ein excelsheet kopieren. Das klappt auch wunderbar wenn ich die Textdatei in excel öffne, mit einer Schleife bis BEGIN_GROUPS suche und dann bis END_GROUPS kopiere.
Das Problem ist, das die Dateien manchmal weit über 75000 Zeilen haben.
Viele haben 250000 Zeilen und die Anweiungen BEGIN_GROUPS und END_GROUPS stehen immer fast am Ende.
Wie kann ich das Problem lösen?
Gruß Flo
Bild

Betrifft: AW: Begriff in Textdatei suchen und importieren
von: Nepumuk
Geschrieben am: 09.01.2007 16:16:20
Hallo Flo,
wie groß sind die Dateien ungefähr (die Größte !!!)? Muss ich fragen, weil sich daran entscheidet, ob ich die auf einen Schlag einlesen kann. Wenn das geht, kannst du mit RegEx suchen, das dauert keine 10 Millisekunden.
Gruß
Nepumuk
Bild

Betrifft: AW: Begriff in Textdatei suchen und importieren
von: Florian Hannemann
Geschrieben am: 09.01.2007 16:23:37
Tja, die können schon 15 bis 20MB haben.
Bild

Betrifft: AW: Begriff in Textdatei suchen und importieren
von: Florian Hannemann

Geschrieben am: 09.01.2007 17:42:28
Hallo,
Ich hab jetzt nochmal das Format, wie die asc-Datei aussieht unten eingefügt:
blablabla...
blablabla...
blablabla...
BEGIN_GROUPS 9
1 L1 2 0 "LIST ELEMENTS" "" "VisualMESH" 1 4 7 10 13 16 ......
2 L2 2 0 "LIST ELEMENTS" "" "VisualMESH" 2 5 8 11 14 17 ...
3 L3 2 0 "LIST ELEMENTS" "" "VisualMESH" 3 6 9 12 15 18 ....
4 CORE 2 0 "LIST ELEMENTS" "" "VisualMESH" 20935 20936 ....
5 RBM_01 1 0 "LIST NODES" "" "VisualMESH" 4576
6 RBM_02 1 0 "LIST NODES" "" "VisualMESH" 1088
7 RBM_03 1 0 "LIST NODES" "" "VisualMESH" 1475
8 QUENCHED 2 0 "LIST ELEMENTS" "" "VisualMESH" 53938 53939 53940 53941 ...
9 VOLUME 2 0 "LIST ELEMENTS" "" "VisualMESH" 1 2 3 4 5 6 ....
END_GROUPS
blablabla...
blablabla...
blablabla...
Die 9 nach BEGIN_GROUPS heißt es folgen 9 Werte.
Danach kommen die Einzelnen Elemente. Die erste Zahl ist unwichtig, der Name danach ist das Element das ich brauche und die Zahl danach ist entweder 1 oder 2.
Die 1 sagt mir, das das Element in Gruppe 1 gehört und die 2 das es in Gruppe 2 gehört.
Also VOLUME = Gruppe 2.
Ich brauche die Elemente die ich dann auf die Gruppen aufteile.
Hoffe ihr könnt mir helfen!
Gruß Flo
Bild

Betrifft: AW: Begriff in Textdatei suchen und importieren
von: Florian Hannemann
Geschrieben am: 09.01.2007 21:50:01
Hat keiner ne Idee.
Muss das Problem unbedingt lösen!
Danke für eure Hilfe
Gruß Flo
Bild

Betrifft: AW: Begriff in Textdatei suchen und importieren
von: Oberschlumpf

Geschrieben am: 10.01.2007 10:46:54
Hi Flo
Versuch es mal so:
https://www.herber.de/bbs/user/39537.xls
Voraussetzung:
Diese XL-Datei muss in dem Verzeichnis mit den asc-Dateien gespeichert werden.
Bis jetzt funktioniert es nur mit einer Datei.
Du musst in der OPEN-Zeile den Dateinamen anpassen.
Wenn du alles in einem Rutsch erledigen willst, dass also ale asc-Dateien auf einmal eingelesen und in den Spalten A + B eingetragen werden sollen, dann mzusst du das Makro anpassen.
Aber bei VBA = gut sollte das ja kein Prob sein, oder?
Ach ja, die Spalten A + B.
Ich habe sie jetzt mal verwendet, weil du - wie viele Andere - nicht genau angegeben hast, in welchen Spalten deine Werte abgelegt werden sollen.
Konnte ich helfen?
(Vielleicht nein, weil mein Makro Zeile für Zeile durchliest. Und bei bis zu 250.000 Zeilen dauert es vielleicht zu lange.
Wenn der Zeilenblock, der dich interessiert, größer ist als 65.536 Zeilen, dann wird das Makro wohl abbrechen, da pro Tabellenblatt nur 65.536 Zeilen zur Verfügung stehen)
Wenn etwas nicht funktioniert, dann beschreib bitte genau, in welcher Zeile der Fehler auftritt, und welche Fehlermeldung erscheint (Fehlertext - nicht nur die Nr)
Ciao
Thorsten
Bild

Betrifft: Oberschlumpf you made my day!!!
von: Florian Hannemann

Geschrieben am: 10.01.2007 11:12:52
Oberschlumpf you made my day!!!
Das ist ja ein Traum. Klappt einwandfrei. Muss jetzt nur noch den Code ein wenig anpassen, ist aber kein Problem.
Ich hab das auch schon mal mit "open ... for input as #1" probiert, aber ich weiß nicht was die Anweisung genau bewirkt, vor allen das #1 würde mich interessieren.
Wenn Du mir das noch kurz erklären könntest wärs perfekt.
Vielen, vielen Dank!!!
Gruß Flo
Bild

Betrifft: AW: Oberschlumpf you made my day!!!
von: Oberschlumpf

Geschrieben am: 10.01.2007 11:50:02
Hi Flo
Na, freut mich doch, dass ich schon jetzt meine gute Tat für den Tag tat :-) - dann kann ich mich ja wieder hinlegen..grins
Der Open-Befehl öffnet eine Datei in einem bestimmten Modus
Input, Output, Append, Binary und Random
Input bedeutet, dass der Inhalt einer Datei eingelesen wird.
Und mit #n wird ein Index festgelegt.
Es kann ja sein, dass du im Code 2 Dateien per Input oder eines der anderen Modi öffnest.
Datei 1 wird dann mit #1 geöffnet und Datei 2 mit #2.
Das ist erforderlich, damit die Programmiersprache - hier VBA - "weiß", welche Datei gemeint ist.
Die # ist die eindeutige Kennzeichnung einer geöffneten Datei. Du kannst es mit der IP-Adresse eines jeden PC im Internet vergleichen. Auch eine IP-Adresse wird weltweit nur 1x vergeben, damit immer genau bekannt ist, welcher PC gemeint ist.
Die Erklärungen zu den anderen Modi kannst du dir unter dem Befehl "Open" in der Excel VBA-Hilfe durchlesen.
Konnte ich helfen?
Ciao
Thorsten
Bild

Betrifft: AW: Oberschlumpf you made my day!!!
von: Florian Hannemann

Geschrieben am: 10.01.2007 12:16:55
Klar konntest Du helfen.
Hab den Code jetzt noch nach meinen Bedürfnissen verändert, so dass die Dateiauswahl flexibel ist und noch ein paar Sachen und jetzt läuft die Sache einwandfrei!
Wegen mir kannst Dich wieder hinlegen ;-)
Vielen Dank
Gruß
Flo
 Bild
Excel-Beispiele zum Thema "Begriff in Textdatei suchen und importieren"
Suchbegriff über mehrere Tabellenblätter suchen. Zellinhalt als Internet-Suchbegriff
Hinzufügen von Begriffen zur AutoKorrektur-Liste Datensatz nach Eingabe eines Kurzbegriffes
Nach Eingabe eines Kurzbegriffes Werte in Nebenzellen eintragen Textdatei nach Begriff durchsuchen und Fundzeile importieren
Begriffe in ausgeblendeter Spalte suchen und Fundzeile markieren Suchbegriff aus einer UserForm-Textbox in Tabelle suchen und melden
Suchbegriff über InputBox abfragen und Fundzeile löschen Begriffe in zweiter Tabelle suchen und Werte anfügen