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

DateiSuche

Forumthread: DateiSuche

DateiSuche
14.02.2013 12:11:45
haw
Hallo Excelfreunde,
ich habe folgenden Code, der mir als FileSearch-Ersatz dient:

Sub Dateien_Listen()
Dim fs As Object
Dim fo As Object
Dim f As Object
Dim ws As Worksheet
Dim lZeile As Long
Dim Pfad$, Suffix$
Dim wksquelle As Worksheet
Pfad = ThisWorkbook.path & "\Details-Forecast"
Pfad = "E:\EXCEL\Codebook\Dateien"
Set ws = ThisWorkbook.Worksheets("Dateiliste")
Set fs = CreateObject("Scripting.FileSystemObject")
Set fo = fs.GetFolder(Pfad)
Suffix = "xls"
For Each f In fo.Files
If fs.GetExtensionName(f.Name) = Suffix Then
lZeile = lZeile + 1
ws.Cells(lZeile, 1).Value = f.path
ws.Cells(lZeile, 2).Value = f.Name
End If
Next
End Sub

Wie kann ich auch die Unterordner miteinbeziehen?
Vielen Dank
Heinz

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DateiSuche
14.02.2013 12:20:53
Rudi
Hallo,
ungetestet:
Sub Dateien_Listen()
Dim fs As Object
Dim fo As Object, sFo As Object
Dim f As Object
Dim ws As Worksheet
Dim lZeile As Long
Dim Pfad$, Suffix$
Dim wksquelle As Worksheet
Pfad = ThisWorkbook.Path & "\Details-Forecast"
Pfad = "E:\EXCEL\Codebook\Dateien"
Set ws = ThisWorkbook.Worksheets("Dateiliste")
Set fs = CreateObject("Scripting.FileSystemObject")
Set fo = fs.GetFolder(Pfad)
Suffix = "xls"
For Each f In fo.Files
If fs.GetExtensionName(f.Name) = Suffix Then
lZeile = lZeile + 1
ws.Cells(lZeile, 1).Value = f.Path
ws.Cells(lZeile, 2).Value = f.Name
End If
Next
For Each sFo In fo.subfolders
For Each f In sFo.Files
If fs.GetExtensionName(f.Name) = Suffix Then
lZeile = lZeile + 1
ws.Cells(lZeile, 1).Value = f.Path
ws.Cells(lZeile, 2).Value = f.Name
End If
Next
Next
End Sub

Gruß
Rudi

Anzeige
AW: DateiSuche
14.02.2013 13:02:24
haw
Hallo Rudi,
vielen Dank - funktioniert natürlich!
Gruß
Heinz

AW: DateiSuche
14.02.2013 13:10:54
Michael
Hallo Heinz,
ich habe mal nach einer bestimmten Datei (Speicherort von Adobe Reader) suchen müssen und hier folgendes gefunden und verwendet:

Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Public Function FileFind(ByRef hFileName As String, Optional ByVal hPart As String = "C:\") As  _
String
1 On Error GoTo errorHandling
2 Dim rapi As Long
3 Dim hPfad As String
4 On Error GoTo Fehler
' keine Datei übergeben
5 If Len(Trim$(hFileName)) = 0 Then Err.Raise 75
' ZielPfad vorbereiten
6 hPfad = String(MaX_PaTH, 0)
' aPI-aufruf
7 rapi = SearchTreeForFile(hPart, hFileName, hPfad)
' gefunden ?
8 If rapi = 0 Then Err.Raise 76
' Rückgabewert
9 FileFind = Left(hPfad, InStr(hPfad, Chr(0)) - 1)
10 Exit Function
11 Fehler:
12 Err.Clear
13 FileFind = ""
14 out:
15 Exit Function
16 errorHandling:
17 Resume out:
End Function
Sub testfilefind()
1 Dim Pfad As String
2 Pfad = FileFind("AcroRd32.exe", "C:\")
Debug.Print Pfad
End Sub
Wenn Du jetzt in der Routine "testfilefind" Deine For-Each Schleife mit einbaust, müsste das gehen.
Gruß,
Michael :-)

Anzeige
;

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