Call Filesearch(fld) ’ in Fld ist der Pfad bsp. d:\
Die Function Filesearch ist folgendermassen aufgebaut
Function Filesearch(fld As Folder)
On Error Resume Next
Dim i As Long
Dim fs As Filesearch
Set fs = Application.Filesearch
fs.NewSearch
fs.LookIn = fld
fs.SearchSubFolders = True
fs.FileName = „*.mp3“
fs.FileType = msoFileTypeAllFiles
Application.FindFile
fs.LastModified = msoLastModifiedAnyTime
fs.Execute
If fs.FoundFiles.Count > 0 Then
ReDim strVerzeichnis(fs.FoundFiles.Count)
ReDim strdateien(fs.FoundFiles.Count)
For i = 1 To fs.FoundFiles.Count
strVerzeichnis(i) = fs.FoundFiles(i)
strdateien(i) = fs.FoundFiles(i)
Next i
Else
MsgBox „es wurden keine entsprechende Dateien gefunden.“, vbInformation, „Keine Dateien gefunden…“
End
End If
End Function
Rufe ich diese Prozedure das erstemal auf, so funktioniert alles einwandfrei. Aber solbald ich sie erneut aufrufe, bekomme ich bei der Zuweisung fs.FileName = „*.mp3“ den Laufzeitfehler 5 und er gibt mir alle daten zurueck.
Weiss jemand wo mein Fehler liegt oder wie ich es anders realisieren kann?
Hi Anno,
ich würde nie einen Namen vergeben den auch Excel-VBA benutzt, wie bei Filesearch. kann nur Ärger geben und erhöht nicht die Lesbarkeit…
Beim Codeposten benutze bitte (zusammengeschrieben) vor dem Code und danach, das erhält die Einrückungen.
mein nachfolgender Code lief problemlos bei xl2000.
Gruß
Reinhard
Dim n As Integer
Sub test()
Application.ScreenUpdating = False
For n = 1 To 5
Call suche("c:\temp")
Next n
Application.ScreenUpdating = True
End Sub
Function suche(fld) 'as Folder geht bei xl2000 nicht
On Error Resume Next
Dim i As Long
Dim fs As Filesearch
Set fs = Application.Filesearch
fs.NewSearch
fs.LookIn = fld
fs.SearchSubFolders = True
fs.Filename = "\*.txt"
fs.FileType = msoFileTypeAllFiles
Application.FindFile
fs.LastModified = msoLastModifiedAnyTime
fs.Execute
If fs.FoundFiles.Count \> 0 Then
ReDim strVerzeichnis(fs.FoundFiles.Count)
ReDim strdateien(fs.FoundFiles.Count)
For i = 1 To fs.FoundFiles.Count
'strVerzeichnis(i) = fs.FoundFiles(i)
'strdateien(i) = fs.FoundFiles(i)
ThisWorkbook.Worksheets("Tabelle1").Cells(i, n) = fs.FoundFiles(i)
Next i
Else
MsgBox "es wurden keine entsprechende Dateien gefunden.", vbInformation, "Keine Dateien gefunden..."
'End 'unnötig
End If
End Function
ich dursuche per Makro meine HD nach Mp3 Dateien.
Aufruf erfolgt über
Call Filesearch(fld) ’ in Fld ist der Pfad bsp. d:\
Die Function Filesearch ist folgendermassen aufgebaut
Function Filesearch(fld As Folder)
On Error Resume Next
Dim i As Long
Dim fs As Filesearch
Set fs = Application.Filesearch
fs.NewSearch
fs.LookIn = fld
fs.SearchSubFolders = True
fs.FileName = „*.mp3“
fs.FileType = msoFileTypeAllFiles
Application.FindFile
fs.LastModified = msoLastModifiedAnyTime
fs.Execute
If fs.FoundFiles.Count > 0 Then
ReDim strVerzeichnis(fs.FoundFiles.Count)
ReDim strdateien(fs.FoundFiles.Count)
For i = 1 To fs.FoundFiles.Count
strVerzeichnis(i) = fs.FoundFiles(i)
strdateien(i) = fs.FoundFiles(i)
Next i
Else
MsgBox „es wurden keine entsprechende Dateien gefunden.“,
vbInformation, „Keine Dateien gefunden…“
End
End If
End Function
Rufe ich diese Prozedure das erstemal auf, so funktioniert
alles einwandfrei. Aber solbald ich sie erneut aufrufe,
bekomme ich bei der Zuweisung fs.FileName = „*.mp3“ den
Laufzeitfehler 5 und er gibt mir alle daten zurueck.
Weiss jemand wo mein Fehler liegt oder wie ich es anders
realisieren kann?
danke für deine Antwort. Also ich habe deine Code genauso übernommen und habe das selbige Problem
Was mir aber aufgefallen ist, das der Fehler nur auftritt wenn ich das Laufwerk F angebe. Bei den anderen geht klappt es mit deiner und meiner Routine.
Was mich nur wundert das er den Fehler Nr. 5 bei folgender Zeile bringt
fs.FileName = "\*.mp3"
Das hat doch eigentlich garnichts mit dem Laufwerk zu tun.
Weisst du woran des liegen kann?
MFG Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]