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

Forumthread: Unterordner suchen und Pfad ausgeben

Unterordner suchen und Pfad ausgeben
06.01.2017 13:14:52
Peter
Liebe Experten,
ich bitte um Eure Hilfe.
Hat jemand von Euch ein Modul mit dem ein Ordner mit bestimmten Namen (z.B. Test) gesucht werden kann und dann der ganze Pfad ausgegeben wird?
Für Eure Hilfe bedanke ich mich schon voraus.
LG, Peter
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CMD.exe
06.01.2017 13:30:25
Fennek
Hallo,
um z.B. den Ordner "Destop" zu finden, geht im cmd-Fenster:

c:\users\user>dir /A:D /S /B desktop
Hilfe mit dir /?
Dies kann auch direkt aus vba aufgerufen werden.
mfg
AW: CMD.exe
06.01.2017 15:39:51
Peter
Hallo Fennek,
was ist ein cmd-Fenster?
LG, Peter
Anzeige
AW: CMD.exe
06.01.2017 16:17:55
Fennek
Hallo,
kennen nur noch Vor-Windows-Leute cmd, das alte DOS?
In vba sollte dieser Code von snb helfen (Änderungen ungeprüft)
"c:\temp" muss durch den Basisordner ersetz werden.
"A:D" findet nur folder, keine Dateien
"/s" durchsucht alle Unterorder
"/b" ist ein ein-zeiliges Ausgabeformat mit dem kompletten Pfad

Sub M_snb_dir()
sn = Split(CreateObject("wscript.shell").exec("cmd /c dir ""c:\temp\"" /b/s/a:d").stdout. _
readall, vbCrLf)
For Each d In sn
msgbox d
Next d
End Sub
mfg
Anzeige
AW: Unterordner suchen und Pfad ausgeben
07.01.2017 03:54:00
Peter
Hallo Fennek,
vielen Dank für deine Hilfe. Ich habe mich falsch ausgedrückt.
Ich suche nach einem Code welches zu einem Unterordner den entsprechen Pfad liefert.
Z.Bsp habe ich einen Ordner Test und einen Pfad C:\Ordner1\Ordner2\Ordner3\Test\Ordner4\usw.
In der Masterdatei steht in A1 der Name des Orders (z.B. Test) der gesucht werden soll.
In B1 soll dann der dazugehörige Pfad (C:\Ordner1\Ordner2\Ordner3\) eingefügt werden.
Läßt sich so etwas mut VBA machen?
Lh, Peter
Anzeige
AW: Unterordner suchen und Pfad ausgeben
07.01.2017 12:22:36
firmus
Hi Peter,
hier ein getestetes Beispiel wie eine Dateistruktur per VBA durchgelesen werden kann.
Dabei gewinnst Du auch die Pfad-Information.
Am besten im Debug-Mode(F8) schrittweise anfangen. Die Struktur wird gleich in das aktuelle leere!
Blatt geschrieben.
Die weitere Codierung z.B. mit INSTR Abfrage dürfte dann relativ einfach sein.
https://www.herber.de/bbs/user/110391.xlsm
(Copyright: irgendjemand, irgendwo aus diesem Forum - vor xx Jahren, ich habe es nur verfeinert in der Ausgabe).
Gruß
Firmus
Anzeige
AW: Unterordner suchen und Pfad ausgeben
08.01.2017 21:04:14
Peter
Hallo Firmus,
vielen Dank für deine Hilfe.
Dein Makro kann ich auch sehr gut verwerten.
Denn ich werde auch nach einem Pfad suchen müssen, in dem sich eine bestimmte Datei befindet.
Lg, Peter
Dazu kannst Du eine Funktion...
07.01.2017 13:09:43
Case
Hallo Peter, :-)
... nutzen, die nachfolgend aufgeführt ist - und Deinen Anforderungen entspricht: ;-)
Option Explicit
Function fncFolderSearch(ByVal strFolder As String, _
Optional strTMP As String = "C:\Temp\") As String
Dim strAll() As String
strTMP = IIf(Right(strTMP, 1)  "\", strTMP & "\", strTMP)
strAll = Split(CreateObject("Wscript.Shell").exec _
("CMD /C Dir Dir /S /B /AD " & """" & strTMP & _
strFolder & """" & """").stdout.readall, vbCrLf)
On Error Resume Next
fncFolderSearch = Left(strAll(0), (InStrRev(strAll(0), "\") - 1))
If Err.Number = 9 Then
fncFolderSearch = "Kein Ordner gefunden!"
End If
On Error GoTo 0
End Function
Wenn der Ordner in A1 steht, dann einfach in B1 folgendes eingeben:
=fncFolderSearch(A1)
Was musst Du anpassen, damit es für Dich läuft?
In dieser Codezeile...
Optional strTMP As String = "C:\Temp\") As String
... musst Du "Temp" durch "Ordner1" ersetzen - bezogen auf Dein Beispiel.
Also den ersten Ordner nach C:\ - sonst würde er ja das komplette Laufwerk durchsuchen. Geht natürlich auch, dauert aber dann etwas länger. ;-)
Willst Du es in einem bestehenden Makro nutzen, dann rufe die Funktion einfach auf:
Sub Main()
ActiveSheet.Range("C1").Value = fncFolderSearch("Dezember")
End Sub
Hier schreibe ich das Ergebnis in "C1". Statt "Dezember" natürlich Dein Ordnername, oder eben eine Variable bzw. eine Zelle.
Wird der Ordner nicht gefunden wird "Kein Ordner gefunden!" ausgegeben. ;-)
Servus
Case

Anzeige
AW: Dazu kannst Du eine Funktion...
08.01.2017 20:18:39
Peter
Halle Case,
super!
Vielen Dank!!!
Hast du eventuell auch ein Lösung zur einer meiner vorher gestellten Frage?
1533122 2017-01-04 17:03:41 Konstante in mehreren Dateien verwenden
Hier komme ich überhaupt nicht weiter.
Lg, Peter
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Unterordner suchen und Pfad ausgeben


Schritt-für-Schritt-Anleitung

Um einen Ordner und dessen Unterordner mit VBA zu durchsuchen und den Pfad anzuzeigen, kannst Du folgende Schritte ausführen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Function fncFolderSearch(ByVal strFolder As String, _
    Optional strTMP As String = "C:\Temp\") As String
        Dim strAll() As String
        strTMP = IIf(Right(strTMP, 1) = "\", strTMP & "\", strTMP)
        strAll = Split(CreateObject("Wscript.Shell").exec _
        ("CMD /C Dir /S /B /AD " & """" & strTMP & strFolder & """" & """").stdout.readall, vbCrLf)
        On Error Resume Next
        fncFolderSearch = Left(strAll(0), (InStrRev(strAll(0), "\") - 1))
        If Err.Number = 9 Then
            fncFolderSearch = "Kein Ordner gefunden!"
        End If
        On Error GoTo 0
    End Function
  4. Passe den Basisordner an: Ändere "C:\Temp\" in den Pfad, in dem Du suchen möchtest (z.B. "C:\Ordner1\").

  5. Schließe den VBA-Editor und gehe zurück zu Deinem Arbeitsblatt.

  6. Gib in Zelle A1 den Namen des gesuchten Ordners ein (z.B. "Test").

  7. Gib in Zelle B1 folgende Formel ein:

    =fncFolderSearch(A1)
  8. Drücke Enter. Der Pfad des gesuchten Ordners wird in Zelle B1 angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Kein Ordner gefunden!"

    • Lösung: Überprüfe, ob der Ordnername korrekt in Zelle A1 eingegeben wurde. Achte auf Groß- und Kleinschreibung.
  • Fehler: Ungültiger Pfad

    • Lösung: Stelle sicher, dass der Pfad, den Du in strTMP angibst, existiert und korrekt ist.

Alternative Methoden

Wenn Du nach einer schnelleren Methode suchst, um einen Unterordner zu finden, könntest Du auch die Windows-Suchfunktion nutzen. Hier ist ein einfaches CMD-Kommando, das Du in die Eingabeaufforderung eingeben kannst:

dir "C:\Ordner1\Test" /s

Dies zeigt Dir alle Unterordner und Dateien im angegebenen Pfad an.


Praktische Beispiele

  1. Beispiel für die Verwendung der Funktion: Wenn Du den Ordner "Projekt" in A1 eingibst und strTMP auf "C:\Dokumente\" setzt, wird die Funktion den Pfad zu "Projekt" innerhalb von "C:\Dokumente\" zurückgeben, falls vorhanden.

  2. Suchen nach einer Datei: Um eine spezifische Datei zu finden, kannst Du den Code anpassen, um nicht nur Ordner, sondern auch Dateien zu durchsuchen. Das würde allerdings eine zusätzliche Logik in die Funktion erfordern.


Tipps für Profis

  • Debugging: Nutze den Debug-Modus (F8), um den Code Schritt für Schritt zu durchlaufen und Variablenwerte zu überprüfen.
  • Variablen verwenden: Ersetze den festen Pfad in der Funktion durch eine Zellenreferenz, um die Flexibilität zu erhöhen.

FAQ: Häufige Fragen

1. Frage Wie kann ich den Code anpassen, um auch Dateien zu suchen?

Antwort: Du kannst die CMD-Befehlszeile in der Funktion anpassen, indem Du /AD entfernst und stattdessen nur /S /B verwendest, um alle Dateien aufzulisten.

2. Frage In welcher Excel-Version funktioniert dieser Code?

Antwort: Dieser VBA-Code sollte in Excel 2010 und höher funktionieren, da die verwendeten Funktionen in diesen Versionen unterstützt werden.

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