Vba: bir klasördeki dosyalar nasıl listelenir


Bir klasördeki dosyaları listelemek için VBA’da aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Klasördeki tüm dosyaları listele

 SubListFiles ()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    Cells(i + 1, 1) = objFile.Name
    i = i + 1
Next objFile

End Sub

Yöntem 2: Klasördeki yalnızca .xlsx dosyalarını listeleme

 SubListFiles ()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    If Right(objFile.Name, 4) = "xlsx" Then
        Cells(i + 1, 1) = objFile.Name
        i = i + 1
    End If
Next objFile

End Sub

Aşağıdaki örnekler, her yöntemin pratikte aşağıdaki dosya yoluna sahip bir klasörle nasıl kullanılacağını gösterir:

  • C:\Kullanıcılar\bob\Documents\current_data

Klasör iki .xlsx dosyası ve üç .csv dosyası içerir:

Örnek 1: Klasördeki tüm dosyaları listeleme

Klasördeki tüm dosyaları listelemek için aşağıdaki makroyu oluşturabiliriz:

 SubListFiles ()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    Cells(i + 1, 1) = objFile.Name
    i = i + 1
Next objFile

End Sub

Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:

Klasördeki tüm dosyaların adlarının (uzantılarına bakılmaksızın) artık Excel sayfamızın A sütununda listelendiğini görebiliriz.

Örnek 2: Klasördeki yalnızca .xlsx dosyalarını listeleme

Klasörde yalnızca .xlsx uzantısına sahip dosyaları listelemek için aşağıdaki makroyu oluşturabiliriz:

 SubListFiles ()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    If Right(objFile.Name, 4) = "xlsx" Then
        Cells(i + 1, 1) = objFile.Name
        i = i + 1
    End If
Next objFile

End Sub

Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:

Artık Excel sayfamızın A sütununda klasördeki yalnızca .xlsx uzantılı dosyaların adlarının listelendiğini görebiliyoruz.

Ek kaynaklar

Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

VBA Kullanarak Klasörler Nasıl Oluşturulur
VBA kullanarak klasörler nasıl silinir
VBA kullanarak bir dosyayı yeniden adlandırma
VBA kullanılarak dosyanın var olup olmadığı nasıl kontrol edilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir