Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei in Ordner suchen und Pfad ausgeben

Datei in Ordner suchen und Pfad ausgeben
23.12.2015 15:16:21
Robin
Hallo Zusammen,
ich habe folgendes Problem:
Ich habe eine Userform auf der eine Textbox1 ist die von einer anderen Userform einen Wert Vorname &" "& Nachname übergeben bekommt. Durch ein Change - Ereignis der Textbox1 möchte ich nun das durch VBA ein festgelegtes Verzeichnis, nach einer .xlsm Datei durchsucht wird die im Dateinamen Vorname &" "& Nachname enthält wie in Textbox1 und wenn die Suche übereinstimmt, soll der Pfad und der Dateiname als AddItem in der Listbox2 hinzugefügt werden.
Ich habe das ganze mal probiert aber mit dem Versuch die .xlsm Dateien zu öffnen und den Wert in Tabelle Packliste; jede .xlsm enthält die Tabelle Packliste in dem festen Verzeichnis, mit dem Wert meiner Textbox1 zu vergleichen jedoch ohne Erfolg.
Aber mir wäre es sowieso lieber wenn der Dateiname mit der Textbox1 verglichen würde.
Hier mein alter nicht funktionierender Code:
Option Explicit
Dim Obj As Object
Dim AnzDateien As Object
Dim Durchläufe As Object
Dim Dateityp As Object
Const Verzeichnis = "Mein_fesgelegtes_Verzeichnis(Beispiel)"
Private Sub txt_patname_Change()
Me.ListBox2.Clear
Prüfung_start
End Sub

Private Sub Prüfung_start()
Set Obj = CreateObject("Scripting.FileSystemObject")
Set AnzDateien = Obj.getfolder(Verzeichnis)
Prüfung
End Sub

Private Sub Prüfung()
Application.ScreenUpdating = False
Dim a As Integer
For Each Dateityp In AnzDateien.Files
If Right(Dateityp.Name, 5) = ".xlsm" Then
Workbooks.Open (Dateityp.Path)
For a = 1 To 6
If ActiveWorkbook.Sheets("Packliste").Cells(a, 1) = Me.txt_patname.Text Then
Me.ListBox2.AddItem Dateityp.Path
Exit For
End If
Next
ActiveWorkbook.Close True
End If
Next
For Each Durchläufe In AnzDateien.subfolders
Set AnzDateien = Durchläufe
Prüfung
Next
End Sub

Bin für jede Hilfe dankbar!
MfG

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei in Ordner suchen und Pfad ausgeben
23.12.2015 19:04:09
Oberschlumpf
Hi Robin
Hast du es schon mit DIR versucht?
Damit sollte es doch eigentlich funktionieren (ungetestet).

Sub DateiSuche()
Dim lstrFile As String
lstrFile = Dir("DeinFesterPfad\*.xlsm")
If lstrFile = "" Then
MsgBox "Im angegebenen Verzeichnis sind keine *.xlsm-Dateien gespeichert."
Exit Sub
End If
Do Until lstrFile = ""
With UserForm1
If Instr(lstrFile, .Textbox1.Text) > 0 Then
.Listbox2.AddItem "DeinFesterPfad\" & lstrFile
Exit Do
End If
End With
Loop
End Sub
Hilfts?
Ciao
Thorsten

Anzeige
mist...KORREKTUR!
24.12.2015 07:10:10
Oberschlumpf
Hi Robin!
Sorry, das Wichtigste im Code hatte ich vergessen.
Nimm diesen hier:
Sub DateiSuche()
Dim lstrFile As String
lstrFile = Dir("DeinFesterPfad\*.xlsm")
If lstrFile = "" Then
MsgBox "Im angegebenen Verzeichnis sind keine *.xlsm-Dateien gespeichert."
Exit Sub
End If
Do Until lstrFile = ""
With UserForm1
If Instr(lstrFile, .Textbox1.Text) > 0 Then
.Listbox2.AddItem "DeinFesterPfad\" & lstrFile
Exit Do
End If
End With
lstrFile = Dir
Loop
End Sub

Jetzt müsste es laufen, oder?
Ciao
Thorsten
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Datei in Ordner suchen und Pfad ausgeben


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Erstelle eine UserForm mit einer TextBox (TextBox1) und einer ListBox (ListBox2).

  2. VBA-Code hinzufügen: Öffne den VBA-Editor (ALT + F11) und füge den folgenden Code in das Modul der UserForm ein:

    Private Sub txt_patname_Change()
       Me.ListBox2.Clear
       Prüfung_start
    End Sub
    
    Private Sub Prüfung_start()
       Set Obj = CreateObject("Scripting.FileSystemObject")
       Set AnzDateien = Obj.getfolder("Mein_fesgelegtes_Verzeichnis").Files
       Prüfung
    End Sub
    
    Private Sub Prüfung()
       Application.ScreenUpdating = False
       Dim a As Integer
       For Each Dateityp In AnzDateien
           If Right(Dateityp.Name, 5) = ".xlsm" Then
               Workbooks.Open (Dateityp.Path)
               For a = 1 To 6
                   If ActiveWorkbook.Sheets("Packliste").Cells(a, 1) = Me.txt_patname.Text Then
                       Me.ListBox2.AddItem Dateityp.Path
                       Exit For
                   End If
               Next
               ActiveWorkbook.Close True
           End If
       Next
    End Sub
  3. Dateipfad suchen: Der Code durchsucht das festgelegte Verzeichnis nach Dateien, die ".xlsm" enden und deren Name mit dem eingegebenen Text in TextBox1 übereinstimmt.


Häufige Fehler und Lösungen

  • *Fehler: "Im angegebenen Verzeichnis sind keine .xlsm-Dateien gespeichert."**

    • Lösung: Überprüfe den Pfad, der im Code angegeben ist. Stelle sicher, dass er korrekt und dass mindestens eine .xlsm-Datei vorhanden ist.
  • Fehler: ListBox bleibt leer

    • Lösung: Stelle sicher, dass der Name in TextBox1 exakt mit dem Dateinamen übereinstimmt. Achte auf Groß- und Kleinschreibung.

Alternative Methoden

Eine alternative Methode zur Suche nach Dateien in einem Ordner ist die Verwendung der Dir-Funktion. Hier ist ein Beispiel, das du in ein Modul einfügen kannst:

Sub DateiSuche()
    Dim lstrFile As String
    lstrFile = Dir("DeinFesterPfad\*.xlsm")
    If lstrFile = "" Then
        MsgBox "Im angegebenen Verzeichnis sind keine *.xlsm-Dateien gespeichert."
        Exit Sub
    End If
    Do Until lstrFile = ""
        With UserForm1
            If InStr(lstrFile, .Textbox1.Text) > 0 Then
                .Listbox2.AddItem "DeinFesterPfad\" & lstrFile
                Exit Do
            End If
        End With
        lstrFile = Dir
    Loop
End Sub

Praktische Beispiele

  • Beispiel 1: Wenn du in TextBox1 "Max Mustermann" eingibst, sucht der Code nach einer Datei in "Mein_fesgelegtes_Verzeichnis", die "Max Mustermann" im Dateinamen hat.

  • Beispiel 2: Verwende das Dir-Verfahren, um alle .xlsm-Dateien in einem Ordner aufzulisten, die "Test" im Dateinamen enthalten.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Variablen zu deklarieren und Fehler zu vermeiden.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme besser zu managen. Nutze On Error Resume Next oder On Error GoTo.
  • Performance optimieren: Deaktiviere Application.ScreenUpdating und Application.Calculation, während der Code ausgeführt wird, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Frage Wie kann ich die Suche auf bestimmte Ordner beschränken?

Antwort Ändere den Pfad im Code auf den gewünschten Ordner. Achte darauf, dass der Pfad korrekt ist.

2. Frage Was mache ich, wenn der Code nicht funktioniert?

Antwort Überprüfe die Syntax des Codes und stelle sicher, dass alle Objekte korrekt deklariert sind. Achte darauf, dass die UserForm-Elemente korrekt benannt sind.

Mit diesen Anleitungen und Tipps bist du bestens gerüstet, um in Excel VBA Dateien zu suchen und den Pfad anzuzeigen. Nutze die Möglichkeiten von vba datei suchen und pfad anzeigen voll aus!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige