Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ordner suchen in Verzeichnis Pfad ausgab

Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 16:02:38
Andreas
Hallo,
ich habe noch eine Frage bezüglich dem Durchsuchen von Ordnern. Überall finde ich, wie man Dateien in Ordnern suchen kann.
Ich würde aber gerne per VBA ein Verzeichnis (Z:\Test) durchsuchen, das mir einen speziellen Ordner finden soll. Dazu soll er alle Unterordner durchsuchen, bis er den Ordner gefunden hat. Es gibt nur einen Ordner, der gefunden werden kann. Und dieser ORdner hat auch einen definierten Namen (zb Log).
Kann mir jemand helfen, wie man das per VBA so hinbekommt, dass mir hinterher als msgbox der Pfad angezeigt wird, in dem sich der LOG befindet?

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

Betreff
Datum
Anwender
Anzeige
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 16:28:53
Yal
Hallo Andreas,
wenn es nciht unbedingt mit VBA gemacht werden soll, dann so:
_ DOS-Fenster öffnen (Win+r, "cmd")
_ auf dem Start-Verzeichnis navigieren ( cd Verzeichnisname)
_ Befehl anstossen: dir /s /ad |find "log"
Mit VBA müsste man rekursiv eingehen:

Option Explicit
'unter Anbindung vom Microsoft Scripting Runtime
' ("Extras", "Verweise...", "Microsoft Scripting Runtime" anhacken)
Private FSO As FileSystemObject
Sub Verzeichnis_suchen()
Dim Ergebnis As String
Const StartVerzeichnis = "Z:\Test"
Ergebnis = Verzeichnis_auflisten(StartVerzeichnis)
Debug.Print Ergebnis
MsgBox Ergebnis, vbOKOnly, "Ergebnis"
End Sub
Function Verzeichnis_auflisten(Pfad As String, Optional VerzName As String = "Log") As String
Dim BasisVerz As Folder
Dim SubVerz As Folder
Dim Ergebnis As String
'Verzeichnis holen, wenn nicht vorhanden, rausspringen
Set BasisVerz = FSO.GetFolder(Path)
If BasisVerz Is Nothing Then Exit Function
'Unterverzeichnis durchgehen (Rekursiv)
For Each SubVerz In BasisVerz.SubFolders
Ergebnis = Verzeichnis_auflisten(SubVerz.Path)
If InStr(1, VerzName, Ergebnis, vbTextCompare) Then
Verzeichnis_auflisten = Ergebnis
Exit Function
End If
Next SubVerz
End Function
VG
Yal
Anzeige
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 16:55:58
Andreas
Kommt leider ein Fehler bei Pfad.... Das ganze in ein Modul verschoben?
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 17:00:57
UweD
Hallo
hast du auch die Verweise im VBA Editor angeklickt?

'unter Anbindung vom Microsoft Scripting Runtime
' ("Extras", "Verweise...", "Microsoft Scripting Runtime" anhacken)
LG UweD
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 17:01:56
Andreas
ja habe ich gemacht. ....
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 17:55:37
Nepumuk
Hallo Andreas,
teste mal:

Option Explicit
Public Sub Beispiel()
Const FOLDER_PATH As String = "Z:\Test\"
Dim strFolder As String
strFolder = GetFolder(FOLDER_PATH, "Log")
If strFolder = vbNullString Then
Call MsgBox("Nicht gefunden")
Else
Call MsgBox(strFolder)
End If
End Sub
Private Function GetFolder(ByVal pvstrPath As String, ByVal pvstrFoldername As String) As String
Dim astrFolders() As String
Dim strFolder As String, strPath As String
Dim ialngIndex1 As Long, ialngIndex2 As Long
strPath = pvstrPath
Do
strFolder = Dir$(PathName:=strPath & "*", Attributes:=vbDirectory)
Do Until strFolder = vbNullString
If strFolder  "." And strFolder  ".." Then
If GetAttr(PathName:=strPath & strFolder) And vbDirectory Then
If strFolder = pvstrFoldername Then
GetFolder = strPath & strFolder
Exit Function
End If
ReDim Preserve astrFolders(0 To ialngIndex1)
astrFolders(ialngIndex1) = strPath & strFolder & "\"
ialngIndex1 = ialngIndex1 + 1
End If
End If
strFolder = Dir$
Loop
If ialngIndex1 = ialngIndex2 Then Exit Do
strPath = astrFolders(ialngIndex2)
ialngIndex2 = ialngIndex2 + 1
Loop
End Function
Gruß
Nepumuk
Anzeige
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 18:27:20
Andreas
Hallo Nepumuk
dein Code hat mir den Abend gerettet. Der funktioniert genau so, wie ich ihn mir vorgstellt habe!"
Vielen Dank und schönen Abend...
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 18:01:28
Yal
Nun ja, diesmal gründlich getestet, und somit komplett anders:

'unter Anbindung vom Microsoft Scripting Runtime
' ("Extras", "Verweise...", "Microsoft Scripting Runtime" anhacken)
Private FSO As New FileSystemObject
Dim ErgebnisPfad As String
Sub Verzeichnis_suchen()
Dim Ergebnis As String
'Const StartVerzeichnis = "Z:\Test"
Dim StartVerzeichnis As Folder
Set StartVerzeichnis = FSO.GetFolder("C:\Temp\H_for")
Verzeichnis_auflisten StartVerzeichnis, "ordner3"
Debug.Print ErgebnisPfad
MsgBox ErgebnisPfad, vbOKOnly, "Ergebnis"
End Sub
Function Verzeichnis_auflisten(Pfad As Folder, Optional VerzName As String = "Log") As Boolean
Dim BasisVerz As Folder
Dim SubVerz As Folder
If InStr(1, Pfad.Path, VerzName, vbTextCompare) Then
ErgebnisPfad = Pfad
Verzeichnis_auflisten = True
Exit Function
Else
'Unterverzeichnis durchgehen (Rekursiv)
For Each SubVerz In Pfad.SubFolders
If Verzeichnis_auflisten(SubVerz, VerzName) Then Exit Function
Next SubVerz
End If
End Function
VG
Yal
Anzeige
AW: Ordner suchen in Verzeichnis Pfad ausgab
19.10.2021 18:07:50
Yal
Und wenn ich nochmal lese, bevor ich sende, dann entdecke ich auch noch, dass ich meine eigene Verzeichnisse drin gelassen hatte:

'unter Anbindung vom Microsoft Scripting Runtime
' ("Extras", "Verweise...", "Microsoft Scripting Runtime" anhacken)
Private FSO As New FileSystemObject
Private ErgebnisPfad As String
Sub Verzeichnis_suchen()
Const StartVerz = "Z:\Test"
Const SuchVerz = "log"
Verzeichnis_auflisten FSO.GetFolder(StartVerz), SuchVerz
MsgBox ErgebnisPfad, vbOKOnly, "Ergebnis"
End Sub
Private Function Verzeichnis_auflisten(Pfad As Folder, Optional VerzName As String = "Log") As Boolean
Dim BasisVerz As Folder
Dim SubVerz As Folder
If InStr(1, Pfad.Path, VerzName, vbTextCompare) Then
ErgebnisPfad = Pfad
Verzeichnis_auflisten = True
Exit Function
Else
'Unterverzeichnis durchgehen (Rekursiv)
For Each SubVerz In Pfad.SubFolders
If Verzeichnis_auflisten(SubVerz, VerzName) Then Exit Function
Next SubVerz
End If
End Function
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige