Dateien in Excel VBA filtern: Ausschluss von Strings
Schritt-für-Schritt-Anleitung
Um in Excel VBA Dateien zu filtern und solche auszuschließen, die einen bestimmten String enthalten, kannst du die folgende Vorgehensweise verwenden. In diesem Beispiel möchten wir alle Dateien einlesen, die mit "DE" beginnen, jedoch die Dateien ignorieren, die "SOAP" im Dateinamen enthalten.
- Öffne den VBA-Editor in Excel mit
ALT + F11
.
- Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Modul".
- Nutze den folgenden Code:
Sub FilterFiles()
Dim FSO As Object
Dim fld As Object
Dim f As Object
Dim strOrdner As String
Dim lr As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
strOrdner = ThisWorkbook.Path
Set fld = FSO.GetFolder(strOrdner)
lr = 1 ' Zeile für die Ausgabe
For Each f In fld.Files
If Left(f.Name, 2) = "DE" And InStr(1, f.Name, "SOAP") = 0 Then
lr = lr + 1
Cells(lr, 1).Value = f.Name
Cells(lr, 2).Value = f.DateLastModified
End If
Next f
End Sub
- Führe das Makro aus: Drücke
F5
, um das Makro zu starten und die gewünschten Dateien in das Arbeitsblatt zu laden.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du eine andere Möglichkeit suchst, um Dateien zu filtern, kannst du den Dir
-Befehl in Kombination mit einer If
-Bedingung verwenden. Hier ist eine alternative Methode:
Sub AlternativeFilter()
Dim strDatei As String
Dim strOrdner As String
strOrdner = ThisWorkbook.Path
strDatei = Dir(strOrdner & "\DE*.*")
Do While strDatei <> ""
If InStr(1, strDatei, "SOAP") = 0 Then
' Hier kannst du die Aktionen durchführen, z.B. in eine Liste einfügen
End If
strDatei = Dir
Loop
End Sub
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du den vba string enthält
-Befehl nutzen kannst, um Dateien auszuschließen:
-
Um Dateien mit einem bestimmten Muster wie "DE*" zu filtern und "SOAP" auszuschließen:
If Left(f.Name, 2) = "DE" And InStr(1, f.Name, "SOAP") = 0 Then
-
Wenn du mehrere Strings gleichzeitig ausschließen möchtest, kannst du dies mit zusätzlichen Bedingungen umsetzen:
If Left(f.Name, 2) = "DE" And InStr(1, f.Name, "SOAP") = 0 And InStr(1, f.Name, "TEST") = 0 Then
Tipps für Profis
-
Verwende Option Explicit
: Füge am Anfang deines Moduls Option Explicit
hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft dir, Fehler zu vermeiden.
-
Verwende die With
-Anweisung: Wenn du mit Objekten arbeitest, nutze die With
-Anweisung, um den Code leserlicher und effizienter zu gestalten.
-
Optimiere die Schleifen: Wenn du viele Dateien hast, kann es hilfreich sein, nur die benötigten Informationen zu speichern und die Schleifen so kurz wie möglich zu halten.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Strings ausschließen?
Du kannst mehrere And
-Bedingungen in der If
-Anweisung verwenden, um verschiedene Strings auszuschließen.
2. Was bedeutet InStr
in VBA?
InStr
ist eine Funktion in VBA, die die Position eines bestimmten Strings innerhalb eines anderen Strings zurückgibt. Wenn der String nicht gefunden wird, gibt die Funktion 0 zurück.
3. Kann ich Dir
auch für andere Dateitypen verwenden?
Ja, du kannst Dir
verwenden, um nach verschiedenen Dateitypen zu filtern, indem du das Muster im Befehl entsprechend änderst (z.B. *.txt
, *.jpg
, etc.).
4. Was ist der Unterschied zwischen If...Then
und Select Case
?
If...Then
eignet sich gut für einfache Bedingungen, während Select Case
nützlich ist, wenn du viele Bedingungen überprüfen musst.