VBA FileDialog | VBA Kodunu Kullanarak FilesDialog Box Nasıl Açılır?

Excel VBA FileDialog

VBA'da fieldialog, farklı örnekleri temsil etmek için kullanılan bir özelliktir, filedialog'da, belirli bir yoldan bir dosya seçmek için kullanılan msofiledialogfilepicker olarak bilinen dört farklı sabit türü vardır. bir klasör ve üçüncüsü, bir dosyayı açmak için açık olan msofiledialog'dur ve sonuncusu, bir dosyayı yeni bir dosya olarak kaydetmek için kullanılan msofiledialogsaveas'dır.

Verileri başka bir dosyadan veya başka bir çalışma sayfasından istediğimiz belirli durumlar vardır ve VBA işimizi otomatikleştirmek için kullanıldığından, VBA'yı kullanarak farklı başka dosyaları açabiliriz ve bunu kullanmanın harika kısmı olan Filedialog kullanılarak yapılır. yöntem, koda giden yolu sağlamamız gerekmemesi, bunun yerine kullanıcıdan dosyaya göz atmasını istememizdir.

VBA projesinin bir parçası olarak, diğer çalışma kitaplarını açıp onlarla bir tür görev yürütmemiz gerekebilir. Önceki makalelerimizden biri olan "VBA Workbook.Open" da, belirli bir yol ve belirli bir dosya ile dosyaların nasıl açılacağını gösterdik. Orada, klasör yolunu ve dosya adını uzantısıyla birlikte sağlamamız gerekiyordu. Ama ya bir kullanıcının her seferinde farklı klasörlerden farklı dosyaları seçmesi gerekiyorsa. "FileDialog" seçeneğinin resmin içine girdiği yer burasıdır.

VBA FileDialog Seçeneği Nasıl Çalışır?

"Tam yolu bilmiyorsanız, FileDialog dosyayı bulacak ve size seçecektir". Yol adresini ve dosya adını belirtmek yerine, dosyayı bilgisayardaki herhangi bir klasörden seçmek için ayrı olarak bir dosya açma iletişim penceresi sunabiliriz.

Bu VBA FileDialog Excel Şablonunu buradan indirebilirsiniz - VBA FileDialog Excel Şablonu

"FileDialog" , VBA'daki bir nesnedir. Bu seçeneği kullanmak için önce değişkeni FileDialog olarak tanımlamamız gerekir.

Değişken "FileDialog" olarak bildirildiğinde, bir nesne değişkenidir. Bunu kullanmaya başlamak için Application.FileDialog kullanarak nesneyi ayarlamamız gerekir.

Yukarıdaki resimde gördüğümüz gibi FileDialog'un dört seçeneği vardır.

  • msoFileDialogFilePicker: Bu seçenek, kullanıcının isteğine göre istenen dosyayı seçmek için dosya seçici penceresini açar.
  • msoFileDialogFolderPicker: Bu seçenek, Klasörü seçmek için kullanıcının önündeki iletişim kutusunu veya pencereyi açar.
  • msoFileDialogOpen: Bu, kullanıcının seçili dosyayı klasörden açmasına izin verecektir.
  • msoFileDialogSaveAs: Bu, kullanıcının dosyayı farklı bir kopya olarak kaydetmesine izin verecektir.

Şu an itibariyle msoFileDialogFilePicker seçeneğini seçtim.

Şimdi karşımıza çıkan diyalog kutusunu tasarlamamız gerekiyor.

With Statement kullanarak iletişim kutusunu tasarlayabiliriz.

With deyiminin içine, FileDialog seçeneğinin özelliklerinin ve yöntemlerinin IntelliSense listesini görmek için bir nokta koyun.

Dosya iletişim kutusu açıldığında yalnızca excel dosyalarını görmek için önce uygulanan filtrelerden herhangi birini kaldırmamız gerekir.

Şimdi, excel dosyalarının joker karakter uzantısı ile “Excel Dosyaları” olarak yeni bir filtre uygulamamız gerekiyor.

Şimdi dosya diyalog kutusunun başlığını değiştirelim.

Kullanıcının bir seferde yalnızca bir dosya seçmesine veya birden fazla dosya seçmesine izin verebiliriz. Bunun için "Çoklu Seçime İzin Ver" kullanmamız gerekiyor.

Burada iki seçeneğimiz var. DOĞRU seçilirse, kullanıcının birden çok dosya seçmesine izin verir, eğer YANLIŞ kullanıcı bir seferde yalnızca bir dosya seçebilir.

FileDialog ile tasarlayabileceğimiz başka bir şey de, dosya iletişim kutusu göründüğünde varsayılan klasörün ne olması gerektiği konusunda ısrar edebiliriz. Bunun için İlk Dosya Adını kullanın.

Bunun için adres yolu açılacak varsayılan klasörden bahsetmemiz gerekiyor.

Şimdi nihayet dosya iletişim kutusunu görmek için "Göster" yöntemini uygulamamız gerekiyor.

Kod:

Alt DoEvents_Example1 () Myfile As FileDialog Ayarla Myfile = Application.FileDialog (msoFileDialogFilePicker) Myfile ile .Filters.Clear .Filters.Add "Excel Dosyaları", "* .xlsx?", 1 .Title = "Excel Dosyanızı Seçin !! ! " .AllowMultiSelect = False .InitialFileName = "D: \ Excel Dosyaları". End Sub ile End Göster

Şimdi sonucu görmek için VBA kodunu çalıştırın.

Yukarıdaki resim dosyası iletişim kutusunda görebileceğimiz gibi, belirtilen klasörü varsayılan olarak açmıştır.

Artık herhangi bir alt klasörü seçebilir ve excel dosyalarını seçebiliriz.

Yukarıdaki resme bakın çünkü filtre parametresini yalnızca "Excel Dosyaları" olarak uyguladık.

Bu sadece dosyayı belirtilen klasörden seçecektir. Tam yolu saklamak için bir değişkeni daha dizge olarak tanımlamamız gerekir.

Şimdi with deyiminin içinde "SelectedItems" i seçin. Yeni tanımlanan değişkene seçili öğeler klasör yolunu atayın.

Şimdi nihayet seçilen klasör yolunu VBA mesaj kutusunda gösterin.

Şimdi diyalog kutusunu görmek için programı çalıştıracağım.

Şimdi Dosya Adını “1. "Charts" alt klasöründeki Charts.xlsx ”. Tamam'a tıklarsam, mesaj kutusunda tam klasör yolunu görebiliriz.

Dolayısıyla, bunun gibi, dosyaları Excel'deki klasörden seçmek için FileDialog seçeneğini kullanabiliriz. Dosyaları seçmek için aşağıdaki kodu kullanın.

Kod:

Sub DoEvents_Example1 () Myfile As FileDialog Set Myfile = Application.FileDialog (msoFileDialogFilePicker) Myfile .Filters.Clear .Filters.Add "Excel Dosyaları", "* .xlsx?", 1 .Title = "Dosyanızı Seçin Excel Dosyası !!! " .AllowMultiSelect = False .InitialFileName = "D: \ Excel Dosyaları" .Show FileAddress = .SelectedItems (1) MsgBox FileAddress End Sub ile Bitir