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