FileDialog Özelliği, kullanıcının bir klasör seçmesine olanak tanır. Klasörün içindeki her dosyanın içine girmek için bir döngü yazabilirsiniz.
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