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
c:\users\user>dir /A:D /S /B desktop
Hilfe mit dir /?
Dies kann auch direkt aus vba aufgerufen werden.
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
mfgOption 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?Optional strTMP As String = "C:\Temp\") As String
... musst Du "Temp" durch "Ordner1" ersetzen - bezogen auf Dein Beispiel.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.Um einen Ordner und dessen Unterordner mit VBA zu durchsuchen und den Pfad anzuzeigen, kannst Du folgende Schritte ausführen:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
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
Passe den Basisordner an: Ändere "C:\Temp\"
in den Pfad, in dem Du suchen möchtest (z.B. "C:\Ordner1\"
).
Schließe den VBA-Editor und gehe zurück zu Deinem Arbeitsblatt.
Gib in Zelle A1 den Namen des gesuchten Ordners ein (z.B. "Test").
Gib in Zelle B1 folgende Formel ein:
=fncFolderSearch(A1)
Drücke Enter. Der Pfad des gesuchten Ordners wird in Zelle B1 angezeigt.
Fehler: "Kein Ordner gefunden!"
Fehler: Ungültiger Pfad
strTMP
angibst, existiert und korrekt ist.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.
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.
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.
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen