Saya ingin mengulang melalui file-file direktori menggunakan vba di Excel 2010.
Dalam loop, saya perlu:
- nama file, dan
- tanggal di mana file diformat.
Saya telah memberi kode berikut ini yang berfungsi dengan baik jika folder tidak memiliki lebih dari 50 file, jika tidak sangat lambat (saya membutuhkannya untuk bekerja dengan folder dengan> 10.000 file). Satu-satunya masalah dari kode ini adalah bahwa operasi untuk mencari file.name
membutuhkan banyak waktu.
Kode yang berfungsi tetapi waaaaaay terlalu lambat (15 detik per 100 file):
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
Masalah terpecahkan:
- Masalah saya telah dipecahkan dengan menggunakan solusi di bawah ini dengan
Dir
cara tertentu (20 detik untuk 15000 file) dan untuk memeriksa cap waktu menggunakan perintahFileDateTime
. - Memperhatikan jawaban lain dari bawah 20 detik dikurangi menjadi kurang dari 1 detik.
code
Set MyObj = FileSystemObject BaruObject
.Jawaban:
Inilah interpretasi saya sebagai Fungsi Sebagai gantinya:
sumber
Dir
mengambil kartu liar sehingga Anda bisa membuat perbedaan besar dengan menambahkan filtertest
di depan dan menghindari pengujian setiap filesumber
Dir tampaknya sangat cepat.
sumber
FileDateTime
masalah saya terpecahkan.not
Namun Dir akan melakukannyatraverse the whole directory tree
. Dalam kasus diperlukan: analystcave.com/vba-dir-function-how-to-traverse-directories/…Fungsi Dir adalah cara untuk pergi, tetapi masalahnya adalah Anda tidak dapat menggunakan
Dir
fungsi secara rekursif , seperti yang dinyatakan di sini, di bagian bawah .Cara saya menangani ini adalah dengan menggunakan
Dir
fungsi untuk mendapatkan semua sub-folder untuk folder target dan memuatnya ke dalam array, kemudian meneruskan array ke fungsi yang berulang.Inilah kelas yang saya tulis yang menyelesaikan ini, termasuk kemampuan untuk mencari filter. ( Anda harus memaafkan Notasi Hongaria, ini ditulis ketika itu semua kemarahan. )
sumber
Dir
fungsi kehilangan fokus dengan mudah ketika saya menangani dan memproses file dari folder lain.Saya mendapatkan hasil yang lebih baik dengan komponen tersebut
FileSystemObject
.Contoh lengkap diberikan di sini:
http://www.xl-central.com/list-files-fso.html
Jangan lupa untuk menetapkan referensi di Editor Visual Basic ke Microsoft Scripting Runtime (dengan menggunakan Tools> Referensi)
Cobalah!
sumber
Coba yang ini. ( LINK )
sumber