Bir Klasörün İçindeki Klasörlerin İsimlerini Listele - Microsoft Excel


Tam yolu verilen bir klasörün içindeki bütün klasörlerin isimlerini A sütununda listeleyen makro kodu alternatifidir.

Kod


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

Kod (Açıklamalı)


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

Yararlanılan Kaynaklar
Etiketler
microsoft excel açıklamalı içerik microsoft excel vba