Tam yolu verilen bir klasörün içindeki bütün klasörlerin isimlerini A sütununda listeleyen makro kodu alternatifidir.
Option Explicit
Sub BirKlasorunIcindekiKlasorlerinIsimleriniListele()
'--------------------------------------------------
'Değişkenler
'--------------------------------------------------
Dim klasorListesi As String
Dim sayac As String
Dim yol As String
'--------------------------------------------------
'Atamalar
'--------------------------------------------------
yol = "C:\Windows\"
klasorListesi = Dir(yol, vbDirectory)
sayac = 1
'--------------------------------------------------
'Listeleme yapılacak alanı temizle.
'--------------------------------------------------
Range("A:A").Clear
'--------------------------------------------------
'Klasör isimlerini listele.
'--------------------------------------------------
Do While klasorListesi <> ""
If GetAttr(yol & klasorListesi) = vbDirectory Then
Range("A" & sayac) = klasorListesi
sayac = sayac + 1
End If
klasorListesi = Dir
Loop
End Sub
Option Explicit
Sub BirKlasorunIcindekiKlasorlerinIsimleriniListele()
'--------------------------------------------------
'Eğer klasör içinde birden fazla klasör varsa
'Dir metodu bize bir klasör listesi verecek.
'Bu listeyi bu değişkende saklayacağız.
'--------------------------------------------------
Dim klasorListesi As String
'--------------------------------------------------
'Klasör listesini çalışma sayfasında hücrelere
'döngü aracılığıyla yazdırırken satırları takip
'etmek için kullanılan değişken.
'--------------------------------------------------
Dim sayac As String
'--------------------------------------------------
'Listeleme yapılacak klasörün
'tam yolunun saklandığı değişken.
'--------------------------------------------------
Dim yol As String
'--------------------------------------------------
'Listeleme yapılacak klasörün tam yolunu belirle.
'Bu arada klasör yolunu verirken sonuna "\"
'işaretini koymayı unutmayın.
'Aksi halde hata verebilir.
'--------------------------------------------------
yol = "C:\Windows\"
'--------------------------------------------------
'Klasör içindeki klasörlerin listesini al.
'Bunu da Dir metodunun ikinci parametresiyle
'yapıyoruz. vbDirectory özelliğini kullanarak
'klasördeki klasörlerin isimlerini almak
'istediğimizi belirtmiş olduk.
'--------------------------------------------------
klasorListesi = Dir(yol, vbDirectory)
'--------------------------------------------------
'A sütunundaki satırları takip etmek için
'kullanacağımız değişkenin başlangıç değerini
'atadık.
'--------------------------------------------------
sayac = 1
'--------------------------------------------------
'Listeleme yapılacak alanı temizle.
'--------------------------------------------------
Range("A:A").Clear
'--------------------------------------------------
'Klasör isimlerini döngü ile listele.
'Bütün klasörler işlem görene kadar devam et.
'--------------------------------------------------
Do While klasorListesi <> ""
'--------------------------------------------------
'GetAttr metodu, verilen bir tam yolun özelliğini
'geri döndürüyor. Böylelikle tam yolun ne olduğu
'hakkında bilgi sahibi olabiliyoruz. Bu tam yol
'duruma göre bir dosya, bir klasör veya bir
'sürücü olabilir.
'Eğer tam yol vbDirectory, yani klasör türünden
'bir tam yol ise işlem yap.
'--------------------------------------------------
If GetAttr(yol & klasorListesi) = vbDirectory Then
'--------------------------------------------------
'Klasörün ismini A sütununda ilgili satıra yazdır.
'--------------------------------------------------
Range("A" & sayac) = klasorListesi
'--------------------------------------------------
'Sayacı bir artır.
'--------------------------------------------------
sayac = sayac + 1
End If
'--------------------------------------------------
'Buradaki Dir atamasının olayı da şu: İterasyon.
'Eğer verilen klasörde birden fazla klasör varsa
've siz bu haliyle bunu yazdırmaya kalkarsanız
'sadece ilk içeriğin ismi yazdırılır.
'
'Döngü ile yazdırma işleminde sonraki içeriklerin
'isimlerini alabilmek için, bir sonraki içeriğe
'geçebilmek için Dir fonksiyonunu parametresiz
'olarak ilgili değişkene tekrardan aktarıyoruz.
'--------------------------------------------------
klasorListesi = Dir
Loop
End Sub