In einem Excel.Formular habe ich einen Code für das Auflisten von Dateien:
Sub Fill_Listbox_with_Filenames()
Dim i As Long, totFiles As Long
Dim gefFile As String, dname As String
Dim Suchpfad As String, suchbegriff As String, DateiForm As String
Dim oldStatus As Variant
Suchpfad = ActiveWorkbook.Path
If Suchpfad = „“ Then Exit Sub
DateiForm = „*.xls“
If DateiForm = „“ Then Exit Sub
DateiForm:
Momentan werden alle Excel-Dateien aufgelistet. Es sollen aber nur die Dateien angezeigt werden, die eine oder mehrere Zahlen und evtl. Buchstaben im Dateinamen haben, also z.B. „X9823.xls“ oder „853.xls“, nicht aber „XYZ.xls“ etc.
Oder andere Variante: es sollen alle Dateien angezeigt werden ausser „test.xls“
Kann man so ein Kriterium setzen?
Momentan werden alle Excel-Dateien aufgelistet. Es sollen aber
nur die Dateien angezeigt werden, die eine oder mehrere Zahlen
und evtl. Buchstaben im Dateinamen haben, also z.B.
„X9823.xls“ oder „853.xls“, nicht aber „XYZ.xls“ etc.
Oder andere Variante: es sollen alle Dateien angezeigt werden
ausser „test.xls“
Kann man so ein Kriterium setzen?
Hallo Peter,
soweit mir bekannt nicht beim Einlesen, d.h. Einlesen mußt du alle Dateinamen.
Erst dann kannst du das Eingelesene filtern und z.B. nur die „korrekten“ Dateinamen anzeigen lassen.
Angenommen der eingelesen Dateiname steht in der variablen „Satz“:
Ein Beispiel:
If Ucase(right(Satz,8)) „TEST.XLS“ then msgbox Satz
Das mit Zahlen/Buchstaben filtern geht auch, aber halt aufwendiger.
Gruß
Reinhard
Hallo Reinhard,
Das mit Zahlen/Buchstaben filtern geht auch, aber halt
aufwendiger.
damit hast Du mich an die Beitragsfolge zu Regulären Ausdrücken vor einiger Zeit erinnert. Danke für die Übung, klappt! 
Eventuell kannst du die Funktion ‚Filter‘ ja verwenden.
Gruß Rainer
Private Sub Command1\_Click()
Dim txt(3) As String, i As Integer, Erg As String
txt(0) = "ab12cd"
txt(1) = "abcde"
txt(2) = "1234"
txt(3) = "12ab"
For i = 0 To 3
Erg = Filter(txt(i))
If Erg "" Then
List1.AddItem txt(i)
End If
Next
End Sub
Private Function Filter(ByVal txt As String) As String
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "[0-9]\*"
Set myMatches = myRegExp.Execute(txt)
For Each myMatch In myMatches
If Trim(myMatch.Value) "" Then
Filter = Trim(myMatch.Value)
End If
Next
End Function
Das mit Zahlen/Buchstaben filtern geht auch, aber halt
aufwendiger.
damit hast Du mich an die Beitragsfolge zu Regulären
Ausdrücken vor einiger Zeit erinnert. Danke für die Übung,
klappt! 
Hallo Rainer,
in der Tat, auch ich erinnerte mich spontan daran.
Dann fiel mir ein daß regexp sich auf einen vorliegend Text beziehen muß, nicht auf ein Laufwerk aus dem Dateinamen ausgelesen werden sollen.
So oder so kam ich darauf, erst mal müssen alle Dateinamen eingelesen werden, in ein Textarray oder in eine Textvariable, getrennt durch vbCrLf o.ä.
Dann wollte ich echt schon schreiben, nach dem Einlesen kannste das filtern durch z.B. regexp erledigen lassen, ich weiß da nix genaues, vielleicht Rainer.
Dann dachte ich mir aber, vielleicht hat Rainer es einschlafen lassen sich mit regexp zu beschäftigen so wie ich.
Also schrieb ich es nicht.
Ich irrte mich wie du zeigst 
Gruß
Reinhard
Hallo reinhard,
Ich irrte mich wie du zeigst 
*gg* nein, ich bin da noch nicht weiter. 
Aber der Code im Archiv hat für diese Anwendung gereicht.
Gruß Rainer