This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
vba:tutorials:linebylinewithregexp [23.03.2017 11:24:12] yaslaw created |
vba:tutorials:linebylinewithregexp [23.03.2017 11:33:32] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Zeilenweises Prüfen einer Datei mit RegExp ====== | + | ====== [VBA] Zeilenweises Prüfen einer Datei mit RegExp ====== |
//Eine Datei mit RegeExp zeilenweise durchsuchen und die Resultate verwerten// | //Eine Datei mit RegeExp zeilenweise durchsuchen und die Resultate verwerten// | ||
+ | ===== Intro ===== | ||
RegExp-Erfahrung ist eine Voraussetzung für dieses Tutorial. Ich gehe nicht weiter auf die Regulären Ausdrücke und die Grundfunktionalität von VBScript.RegExp ein. | RegExp-Erfahrung ist eine Voraussetzung für dieses Tutorial. Ich gehe nicht weiter auf die Regulären Ausdrücke und die Grundfunktionalität von VBScript.RegExp ein. | ||
Ich bekomme immer wieder Text-Dateien, die irgend ein Report aus einem System darstellen. Leider sind diese dann nicht im csv- oder einem anderen Sinnvollen Format vorhanden. Also muss man mit einem Parser zuerst herausfinden. | Ich bekomme immer wieder Text-Dateien, die irgend ein Report aus einem System darstellen. Leider sind diese dann nicht im csv- oder einem anderen Sinnvollen Format vorhanden. Also muss man mit einem Parser zuerst herausfinden. | ||
- | Zum Beispiel so etwas | + | |
+ | ===== Analyse ===== | ||
+ | ==== Quelldaten ==== | ||
+ | Die Dateien sehen zum Beispiel so aus | ||
<code>Date 03/11/201> | <code>Date 03/11/201> | ||
User Max Muster | User Max Muster | ||
- | Willkommen Max Muster und Balh und sowieso | + | Willkommen Max Muster und Blah und sowieso |
viele unütze Zeilen | viele unütze Zeilen | ||
Line 40: | Line 44: | ||
So soll mein Resultat aussehen | So soll mein Resultat aussehen | ||
- | + | ==== Gewünschtes Resultat ==== | |
- | <code> | + | <code>date | time | user | account | id | what | product_price | product_currency | local_price | local_currency |
- | date | time | user | account | id | what | product_price | product_currency | local_price | local_currency | + | |
------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ||
03/11/2017 | 11:30 | Max Muster | ABC-123 | 12 | Coffee | 1.25 | EUR | 1.25 | EUR | 03/11/2017 | 11:30 | Max Muster | ABC-123 | 12 | Coffee | 1.25 | EUR | 1.25 | EUR | ||
Line 52: | Line 55: | ||
</code> | </code> | ||
+ | ===== Lösung ===== | ||
+ | ==== RegExp ==== | ||
Dann gehen wir mal ans Werk. Die einzelnen Zeilen werden mittels RegExp gescannt und ausgewertet. | Dann gehen wir mal ans Werk. Die einzelnen Zeilen werden mittels RegExp gescannt und ausgewertet. | ||
Folgende Zeilen brauche ich | Folgende Zeilen brauche ich | ||
Line 87: | Line 92: | ||
\\ rxData wertet die Tabellenzeilen aus und gibt alle Feldinhalte zurück | \\ rxData wertet die Tabellenzeilen aus und gibt alle Feldinhalte zurück | ||
+ | ==== Funktion ==== | ||
Als nächstes können wir bereits die eigentliche Funktion schreiben. | Als nächstes können wir bereits die eigentliche Funktion schreiben. | ||
\\ Darin öffne ich über FileSystemObject die Datei als Stream und iteriere sie Zeilenweise | \\ Darin öffne ich über FileSystemObject die Datei als Stream und iteriere sie Zeilenweise | ||
Line 145: | Line 151: | ||
Debug.Print dateVal, timeVal, user, account, id, what, product_price, product_currency, local_price, local_currency</code> | Debug.Print dateVal, timeVal, user, account, id, what, product_price, product_currency, local_price, local_currency</code> | ||
+ | ==== Vollständige Lsöung ==== | ||
Hier der fertige Code | Hier der fertige Code | ||
<code vb>Public Sub readMyFile() | <code vb>Public Sub readMyFile() |