FileDialog Yöntemi

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

Yayımlandı

kategorisi

yazarı:

Etiketler: