User Tools

Site Tools


vba:tutorials:linebylinewithregexp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
vba:tutorials:linebylinewithregexp [23.03.2017 11:29:13]
yaslaw
vba:tutorials:linebylinewithregexp [23.03.2017 11:33:32] (current)
yaslaw
Line 2: Line 2:
 //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()
vba/tutorials/linebylinewithregexp.1490264953.txt.gz · Last modified: 23.03.2017 11:29:13 by yaslaw