Hallo,
Ich bin Anscheinend eine absolute VBA Lusche. Ich wollte ein Programm dass in PHP bereits funktioniert in VBA umschreiben. Jetzt habe ich zwei Probleme.
Hier erst mal mein Code
Sub findWordinTXT()
Dim sWord As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim AnzFound As Integer
Dim regex As New RegExp
AnzFound = 0
'Wort nach dem gesucht werden soll
sWord = "schwarz"
'Suche nach allen Textdateien im Verzeichnis c:\temp\xl
sSearchPath = "C:\Users\Jakob\Desktop\ProjektArtikelfilter\*.txt"
sPath = "C:\Users\Jakob\Desktop\ProjektArtikelfilter\"
FileName = Dir(sSearchPath)
regex.Pattern = "/\b\d{3}([.\s]?)\d{3}\1\d{2}(?:\1\d{1,2})?\b/"
If FileName <> "" Then
Do While FileName <> ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If regex.test(InputData) Then
'If InStr(1, InputData, sWord) > 0 Then
'Zeile mit Suchwort gefunden
AnzFound = AnzFound + 1
Sheets("Auswertung").Cells(AnzFound, 1) = FileName
Sheets("Auswertung").Cells(AnzFound, 2) = InputData
End If
Loop
Close #1
'nächste Datei
FileName = Dir
Loop
End If
End Sub
Ich glaube mit Regex kommt VBA einfach an seine Grenzen.
Problem 1: Er akzeptiert mein jetziges Pattern nicht. Es funktioniert wunderbar in jedem Tester und in PHP. Auch leichtere Patterns gehen ohne Problem mit VBA. Aber eben nicht dieses. Muss dass in VBA anders geschrieben werden?
Problem 2: Die Auswertung ist sehr dumm da er mir immer die komplette Zeile aus dem String wiedergegeben wird inklusive der Nummer. Ich will aber nur die Nummer ohne Text. Der File Name davor soll bleiben.
Beisiel
A1= test.txt B1= 123 456 789
A2=test2.txt B2= 123.456.789
Beide Zahlen fallen in das Pattern. Und ich will auch nur sie. Ich brauche irgendeine Funktion wie preg_match_all in PHP. Finde aber leider keine bessere wie diese.
Könnt Ihr mir weiterhelfen?
|