Chciałbym przeglądać pliki katalogu za pomocą vba w programie Excel 2010.
W pętli będę potrzebować:
- nazwa pliku i
- data sformatowania pliku.
Zakodowałem następujące, co działa dobrze, jeśli folder nie ma więcej niż 50 plików, w przeciwnym razie jest absurdalnie wolny (potrzebuję go do pracy z folderami z> 10000 plików). Jedynym problemem tego kodu jest to, że operacja wyszukiwania file.name
zajmuje bardzo dużo czasu.
Kod, który działa, ale jest zbyt wolny (15 sekund na 100 plików):
Sub LoopThroughFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Set MySource = MyObj.GetFolder("c:\testfolder\")
For Each file In MySource.Files
If InStr(file.name, "test") > 0 Then
MsgBox "found"
Exit Sub
End If
Next file
End Sub
Problem rozwiązany:
- Mój problem został rozwiązany przez poniższe rozwiązanie wykorzystujące
Dir
w określony sposób (20 sekund dla 15000 plików) i sprawdzanie znacznika czasu za pomocą poleceniaFileDateTime
. - Biorąc pod uwagę inną odpowiedź poniżej 20 sekund, skraca się do mniej niż 1 sekundy.
code
Wygląda na to, że brakuje Ci zestawu MyObj = New FileSystemObject
Object
.