Bu Blogda Ara

13 Mart 2022 Pazar

Microsoft Excel VBA ile Seçtiğiniz Bir Klasörde Alt Klasör ve Dosya Detaylarını Listelemek

Merhabalar.

Bir müddet üstünde çalıştığım fakat bilgi eksikliği nedeniyle tamamlayamadığım bir Excel VBA denemesi vardı.

Mehmet CANBULAT'ın Excel VBA eğitimindeki bilgileri ve bu bağlantıdaki bilgileri bir araya getirip yaptığım deneyde istediğimi kısmen başardım.

Öncelikle Mehmet CANBULAT'ın Recursive Programming detayını verdiği vidyoyu paylaşayım. Burada FSO (File System Object) olarak bilinen objenin SubFolders özelliğini temel aldım.



Ardından Shell.Application objesinin GetDetailsOf özelliğini vidyoda anlatılan özyinelemeli yapının içine yerleştirdim.

Jess adlı kullanıcının paylaştığı refernas kod şu:


Aşağıdaki döngüyü 450'ye kadar uzattım ve diğer etiketler de ortaya çıktı. 320'den sonra etiket değerlerinin boş olduğunu gördüm. Dolayısıyla son etiket sıra numarasını 320'de bıraktım. Metadata başlık listeleyici kodu aşağıdadır:

Bu kod sonucu etiket adlarının listesi aşağıdaki gibidir. Eşittir "=" işaretinden sonra değer olmayan veriler de vardır.


Bir dizi hatadan sonra, aşağıdaki kod ile 5000 adet dosyalı klasörlerde deneyler yaptım.

Gereklilikler
⚠️🚨 Kod sadece, Windows işletim sisteminde çalışır. Bu kod, Windows 10 64 bit üzerinde, Office 2016'da denenmiştir. Eski sürüm Windows işletim sistemlerinde çalışmayabilir.
⚠️🚨 Kodu çalıştırmadan önce, Microsoft Visual Basic for Applications düzenleyicide Tools / References kutusunda, Microsoft Scripting Runtime ✔️ kütüphanesini etkinleştirmelisiniz.
✔️ Kod; HDD ve SSD harddisklerde, FAT32, exFat gibi taşınabilir belleklerde çalışmıştır. En iyi sonuç SSD disklerde sağlanmıştır. Bir exFat taşınabilir bellekte, 5000 adet dosya, 1 dakika 10 saniyede listelenmiştir.


Algoritma oldukça sade olup çalışma mantığı görseldeki gibidir.


Faydalı olmasını dilerim.

Hiç yorum yok:

Yorum Gönder