Dir işlevini döngü içinde herhangi bir bağımsız değişken olmadan tekrar çağırarak klasördeki bir sonraki dosyaya geçebilirsiniz.
Not: FileDialog ve GetOpenFilename birbirine benzer. Amaç bir ya da daha fazla dosya seçmek ise GetOpenFilename kullanılması daha kolaydır. Ancak amaç bir klasör içinde döngü kurmaksa FileDialog daha kullanışlıdır.
Not: FileDialog özelliğinde birden fazla klasör seçemeyiz. Sadece 1 adet seçebiliriz. AllowMultiSelect özelliği birden fazla dosya seçmemize yarar.
Aşağıdaki komut ile seçtiğimiz klasörlerin içindeki belirli dosyaları sırayla açıp işliyoruz
Sub dosya_icinde_gezinti() Dim KlasorYolu As String Dim DosyaListesi As String Dim DosyaAc As Workbook 'Kullanıcıdan klasörün yolunu buluyoruz With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Lütfen Klasör seçin." .ButtonName = "Klasör seç" 'Cancel butonu 0 döndürür, kullanıcı birşey seçerse -1 döndürülür If .Show = 0 Then MsgBox "Klasör seçilmedi" Exit Sub Else 'Klasör yolunu buluyoruz KlasorYolu = .SelectedItems(1) & "\" End If End With 'Dir fonksiyonu ilk dosyanın yolunu bulur DosyaListesi = Dir(KlasorYolu & "*xlsx") Do Until DosyaListesi = "" ' MsgBox DosyaListesi DoEvents 'pencerelerin yetişmesine izin verir Set DosyaAc = Workbooks.Open(KlasorYolu & DosyaListesi) DosyaAc.Sheets(1).Copy before:=ThisWorkbook.Sheets(1) DosyaAc.Close False 'Bu komut bir sonraki dosyaya geçer - bunu unutmayın, aksi takdirde sonsuz bir döngüye girersiniz DosyaListesi = Dir Loop End Sub