Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit VBA Verzeichnis durchsuchen und Datei öffnen

Mit VBA Verzeichnis durchsuchen und Datei öffnen
13.09.2014 18:58:18
Nihat
Hallo und guten Abend.
Ich bin am verzweifeln, denn ich finde einfach keine für mich einfach anzupassende VBA Lösung. Mein Problem:
Ich habe auf der Arbeit einen Ordner (mit Unterordnern), der unzählige PDF Dokumente enthält. Alle 2 Wochen kommt ein neuer Ordner mit weiteren PDFs hinzu. Diese PDF Dateien haben einen ca. 30 stelligen alpha nummerischen Namen, der im Mittelteil eine Kundennummer enthält. Diese Kundennummer kann durchaus bei mehreren Dateien vorkommen. Meine Kollegen und ich müssen täglich anhand der Kundennummer die zur Kundenakte gehörenden Unterlagen suchen und bearbeiten. Die Suche nervt und raubt uns den letzten Nerv, da wir manchmal die Unterlagen nicht finden (obwohl sie vorliegen) und ärger bekommen.
Eine VBA Lösung muss her.
Ich habe mir mit Google einige Codes zusammengesucht und bin auf eine relativ schlichte Lösung gestoßen, die ich anpassen konnte und super funktioniert.
ABER es durchsucht keine Unterordner.
HILFE..

Hier der Code:
  • Sub a_Dateisuche()
    Dim suche As String
    Dim Dateiname
    strpfad = "C:\Users\mina\Testordner\"                       ' das ist mein Testordner auf dem   _
    _
    heimischen Rechner
    suche = InputBox("Bitte den Suchbegriff eingeben")
    If suche = "" Then
    MsgBox "Kein Dateiname eingegeben"
    Else
    Dateiname = Dir((strpfad & "*" & suche & "*"))  'Der Dateiname ist lang und enthält in der  _
    Mitte die Kundennummer. Daher durchsuche ich nur den Mittelteil
    If Dateiname  "" Then
    'Workbooks.Open Filename:=pfad & Dateiname
    ActiveWorkbook.FollowHyperlink strpfad & Dateiname
    Else
    MsgBox ("Sowas.... Nummer wurde ( noch ) nicht vergeben !!")
    End If
    End If
    End Sub
    


  • Kann mir jemand helfen das Makro so zu gestalten, dass die Unterordner auch durchsucht werden?

    Anzeige

    5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Mit VBA Verzeichnis durchsuchen und Datei öffnen
    14.09.2014 00:16:27
    Jürgen
    Hallo Nihat,
    wäre es nicht vieeeel einfacher, die Dateien über den Windows Explorer zu suchen? Und falls Ihr den Adobe Reader verwendet noch der Tipp, dass man damit auch in Inhalten von PDF-Dateien suchen kann - nicht nur in der aktuellen, sondern auch in allen PDF-Dateien in einem Verzeichnis inkl. Unterverzeichnissen.
    Herzlichen Gruß
    Jürgen

    Anzeige
    AW: Mit VBA Verzeichnis durchsuchen und Datei öffnen
    14.09.2014 02:50:36
    Adis
    Hallo
    mein Vorschlag ist die Ordner auflisten und den String der PDF Dateien so zu zerlegen
    das man die Kunden Nummer aufgelistet bekommt. Denn die interessiert euch doch, oder?
    Dazu brauche ich mal ein Beispiel wie der ganze PDF Code aussieht, ab welcher Stelle
    die Kunden Nummer steht, und wie lang sie ist. Gibt es noch andere wichtige Daten?
    Gibt es nur einen Hauptordner mit allen Unter Ordnern, oder mehrere Hauptordner?
    Gruss Adis

    Anzeige
    AW: Mit VBA Verzeichnis durchsuchen und Datei öffnen
    14.09.2014 21:14:13
    Nihat
    Hallo Adis,
    erst einmal Danke für die Antwort :-)
    Uns interessieren die PDF Dateien zu den Kundennummern, damit wir diese finden und aufrufen können.
    In unser System wird eine Kundenakte autom. angelegt. Die dazugehörigen Daten liegen in pdf Form auf dem Server und die müssen wir manuell suchen, finden und damit weiterarbeiten :-(
    Entweder die PDF Datei(en) werden geöffnet, oder sie werden mit einem Hyperlink gelistet, so dass wir sie öffnen können. Wäre beides Super.
    Die Logik der PDF Dateiennamen kann ich morgen mitteilen.
    Es gibt auf einem Netzwerklaufwerk (nennen wir ihn mal H:) einen Ordner ("Dateien"), der wiederum mehrere Ordner mit den Dateien der jeweiligen Einspielung hat.
    Das müsste dann ein Hauptordner mit allen Unter Ordnern sein, oder?

    Anzeige
    AW: Mit VBA Verzeichnis durchsuchen und Datei öffnen
    14.09.2014 22:28:05
    Gerold
    Hallo Nihat
    Vieleicht hilft dir das etwas weiter.
    
    Sub Filesearch()
    Dim strDir As String, objFSO As Object, objDir As Object
    Set objFSO = CreateObject("scripting.filesystemobject")
    strDir = "C:\Users\mina\Testordner\"        'Ordner anpassen
    Set objDir = objFSO.GetFolder(strDir)
    Dateienausgeben objDir
    Set objDir = Nothing: Set objFSO = Nothing
    End Sub
    Sub Dateienausgeben(ByVal Ordner As Object)
    Dim DatOrd As Variant, Datei As Object
    For Each Datei In Ordner.Files             'Ordner
    Debug.Print Datei.Name                 'Dateiname im Direktfenster ausgeben
    Next
    For Each DatOrd In Ordner.SubFolders        'Unterordner
    For Each Datei In DatOrd.Files
    Debug.Print Datei.Name              'Dateiname im Direktfenster ausgeben
    Next
    Next
    End Sub
    
    Gruß Gerold
    Rückmeldung wäre nett.

    Anzeige
    AW: Mit VBA Verzeichnis durchsuchen und Datei öffnen
    15.09.2014 16:30:03
    Adis
    Hallo
    ich habe eine alte Datei zum Ordner auflisten auf Hyperlink geaendert.
    Bitte mal anschauen ob das für euch brauchbar ist. Würde mich sehr freuen.
    Es gibt 2 Kontroll Boxen für U-Ordner auflisten Ja/Nein und Hyperlink Ja/Nein
    Der Pfad muss in Zelle C1 angegeben werden. Man kann auch nur 1 Ordner angeben.
    Die Kunden Nummer sollte man noch auswerten und seitlich mit angeben.
    Ebenso waer es noch vorteilhafter nur die neuen Dateien aufzulisten.
    Dazu muss ich mir erst Gedanken machen wie ich das programmiere.
    https://www.herber.de/bbs/user/92644.xls
    Gruss Adis
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Mit VBA Verzeichnis durchsuchen und Datei öffnen


    Schritt-für-Schritt-Anleitung

    Um mit VBA einen Ordner (inklusive Unterordner) zu durchsuchen und Dateien zu finden, kannst du folgenden Code verwenden. Dieser Code listet alle Dateien in einem bestimmten Verzeichnis und seinen Unterverzeichnissen auf.

    Sub Filesearch()
        Dim strDir As String, objFSO As Object, objDir As Object
        Set objFSO = CreateObject("scripting.filesystemobject")
        strDir = "C:\Users\mina\Testordner\"  ' Ordner anpassen
        Set objDir = objFSO.GetFolder(strDir)
        Dateienausgeben objDir
        Set objDir = Nothing: Set objFSO = Nothing
    End Sub
    
    Sub Dateienausgeben(ByVal Ordner As Object)
        Dim DatOrd As Variant, Datei As Object
        For Each Datei In Ordner.Files  ' Ordner
            Debug.Print Datei.Name  ' Dateiname im Direktfenster ausgeben
        Next
        For Each DatOrd In Ordner.SubFolders  ' Unterordner
            For Each Datei In DatOrd.Files
                Debug.Print Datei.Name  ' Dateiname im Direktfenster ausgeben
            Next
        Next
    End Sub

    Mit diesem Skript kannst du alle Dateien eines Ordners auflisten und auch die Unterordner durchsuchen. Passe den strDir-Wert an deinen gewünschten Ordner an.


    Häufige Fehler und Lösungen

    1. Fehler: „Dateiname zu lang“

      • Lösung: Überprüfe den Pfad und stelle sicher, dass er 260 Zeichen nicht überschreitet. Kürze den Pfad, falls nötig.
    2. Fehler: „Keine Dateien gefunden“

      • Lösung: Stelle sicher, dass du den richtigen Suchbegriff in das Eingabefeld eingibst. Überprüfe auch, ob die Datei im angegebenen Verzeichnis vorhanden ist.
    3. Fehler: Unterordner werden nicht durchsucht

      • Lösung: Verwende den oben angegebenen Code, der speziell für das Durchsuchen von Ordnern und Unterordnern ausgelegt ist.

    Alternative Methoden

    Falls du keine VBA-Lösung verwenden möchtest, kannst du auch die Windows-Suchfunktion im Explorer nutzen, um Dateien in einem Verzeichnis und dessen Unterordnern zu suchen. Außerdem kannst du den Adobe Reader verwenden, um in den Inhalten von PDF-Dateien zu suchen, was hilfreich ist, wenn du mehrere PDF-Dokumente durchsuchen möchtest.


    Praktische Beispiele

    1. PDF-Dateien durchsuchen

      • Wenn du nach PDF-Dateien suchen möchtest, kannst du die Dateiendung im Dir-Befehl angeben:
        Dateiname = Dir((strpfad & "*.pdf"))
    2. Excel-Dateien durchsuchen

      • Um nur Excel-Dateien aufzulisten, ändere die Dateiendung entsprechend:
        Dateiname = Dir((strpfad & "*.xlsx"))
    3. Dateien in einer Liste anzeigen

      • Du kannst die gefundenen Dateinamen in eine Excel-Tabelle ausgeben, anstatt sie nur im Direktfenster anzuzeigen.

    Tipps für Profis

    • Nutze die Application.ScreenUpdating = False und Application.Calculation = xlCalculationManual Befehle, um die Leistung bei großen Ordnersuchen zu verbessern.
    • Vermeide es, bei jeder Datei eine neue Excel-Instanz zu öffnen; nutze stattdessen Hyperlinks, um die Dateien effizient zu öffnen.

    FAQ: Häufige Fragen

    1. Wie kann ich den Pfad eines gefundenen Dokuments anzeigen? Du kannst den vollständigen Pfad der Datei zusammen mit dem Dateinamen ausgeben, indem du den Debug.Print Befehl anpasst:

    Debug.Print Ordner.Path & "\" & Datei.Name

    2. Kann ich auch nach bestimmten Inhalten innerhalb von PDF-Dateien suchen? Die VBA-Funktionalität selbst kann keine Inhalte innerhalb von PDF-Dateien durchsuchen. Du musst dafür separate Software oder Tools verwenden, die diese Funktion unterstützen.

    3. Welche Excel-Version benötige ich für dieses Skript? Das Skript funktioniert in Excel-Versionen, die VBA unterstützen, wie Excel 2010 und neuer. Achte darauf, dass die „Scripting Runtime“ aktiviert ist.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige