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.