VBA GetOpenFilename, Excel'de kullanıcıya standart Windows "Dosya Aç" iletişim kutusunu görüntülemenizi sağlayan bir yöntemdir. Bu iletişim kutusu, kullanıcıların bilgisayarlarının dosya sistemine göz atmalarını ve bir veya daha fazla dosya seçmelerini sağlar. Dosya/dosyalar seçildikten sonra, bu yöntem MultiSelect bağımsız değişkeninin kullanılıp kullanılmadığına bağlı olarak dosya yolunu/yollarını bir dize veya bir dizi dize olarak döndürür.
Aşağıdaki örnekte “Application.GetOpenFilename” metodunun kullanımını anlayacağız.
Variant veri türünde FilePath adlı bir değişkeni bildirerek başlar. VBA kodu daha sonra, filtre “All Files (.)” olarak ayarlandığından kullanıcının herhangi bir dosya türünü seçmesine olanak tanıyan standart Windows “Open File” iletişim kutusunu açan VBA GetOpenFilename yöntemini çağırır.

Kullanıcı bir dosyayı seçer ve işlemi iptal etmezse, kod seçilen dosyanın yolunu içeren bir mesaj kutusu görüntüler.

Ancak kullanıcı işlemi iptal ederse veya bir dosya seçmezse, hiçbir dosyanın seçilmediğini veya işlemin iptal edildiğini belirten farklı bir mesaj kutusu gösterilir.

- Excel VBA'daki VBA GetOpenFilename yöntemi, kullanıcıların bir veya daha fazla dosya seçmesine olanak tanıyan standart Windows "Dosya Aç" iletişim kutusunu görüntülemek için kullanılır.
- VBA GetOpenFilename yöntemi kullanıldığında, kullanıcı 'Dosya Aç' iletişim kutusunda 'İptal' düğmesine tıklarsa, yöntem genellikle VBA GetOpenFilename iptal eylemini belirten 'False' dizesini döndürür.
- VBA GetOpenFilename yöntemini kullanırken, 'Dosya Aç' iletişim kutusu görüntülendiğinde kullanıcıları belirli bir konuma yönlendirmek için varsayılan bir yol belirtebilirsiniz; böylece VBA GetOpenFilename varsayılan yolunun gereksinimlerinize göre ayarlandığından emin olabilirsiniz.
- VBA GetOpenFilename, VBA GetOpenFilename MultiSelect bağımsız değişkenini True olarak ayarlayarak kullanıcıların birden fazla dosya seçmesine izin verecek şekilde yapılandırılabilir. Bu durumda, sonuç seçili dosya yollarının bir dizisidir.
Excel VBA'da GetOpenFileName Nasıl Kullanılır?
Excel'de VBA GetOpenFilename'i kullanmak için şu adımları izleyin:
- Excel çalışma kitabında, Visual Basic for Applications (VBA) düzenleyicisini açmak için ALT + F11 tuşlarına basın.

- VBA düzenleyicisinin içinde, VBA kodunuzu yazabileceğiniz yeni bir modül eklemek için Ekle → Modül'e gidin.

- VBA GetOpenFilename'i kullanmadan önce, seçili dosyanın yolunu saklayacak bir değişken tanımlayın.
Bunun için Dim ifadesini kullanabilirsiniz. Örneğin:
Dim FilePath As Variant - Daha sonra Application.GetOpenFilename metodunu kullanarak “Dosya Aç” iletişim kutusunu görüntüleyin.
Dosya filtreleri ve diğer seçenekleri belirtebilirsiniz. İşte bir örnek:
FilePath = Application.GetOpenFilename(“Metin Dosyaları (*.txt), *.txt”)
Bu örnekte, kod metin dosyaları (*.txt) için bir filtre içeren iletişim kutusunu görüntüler ve seçilen dosyanın yolunu FilePath değişkeninde depolar. - GetOpenFilename çağrıldıktan sonra kullanıcının gerçekten bir dosya seçip seçmediğini kontrol etmek önemlidir.
Bu amaçla bir If ifadesi kullanabilirsiniz. Örneğin:
If FilePath <> “False” Then
Bu satır, FilePath değişkenindeki değerin “False” dizesine eşit olup olmadığını kontrol eder. “False” değilse, bir dosyanın seçildiği anlamına gelir. - If bloğunun içerisine seçili dosyayı işleyecek kodu yazabilirsiniz.
Örneğin, dosya yolunu içeren bir ileti kutusu görüntüleyebilirsiniz:
MsgBox “Seçili Dosya: ” & FilePath - Kullanıcının dosya seçimini iptal ettiği veya bir dosyayı seçmediği durumları da ele almak önemlidir.
Bu, Else bloğu kullanılarak yapılabilir:
Else
MsgBox “Dosya seçilmedi veya işlem iptal edilmedi.”
End If - VBA Düzenleyicisini kapatın ve Excel çalışma kitabınıza dönün.
VBA kodunu çalıştırmak için, Alt + F8 tuşlarına basarak “Makro” iletişim kutusunu açın, oluşturduğunuz makroyu seçin (örneğin, “OpenFile”) ve “Çalıştır” düğmesine tıklayın.
Örnekler
Örnek 1 – Çoklu Dosya Seçimi
Bu örnek, kullanıcının VBA GetOpenFileName MultiSelect bağımsız değişkenini kullanarak birden fazla metin dosyasını seçmesine olanak tanır.
- Adım 1: Yeni modülde, öncelikle “OpenMultipleFiles” adında yeni bir alt rutin tanımlayarak başlıyoruz.

- Adım 2: Burada, seçili dosya yollarını (bir dizi dize olabilir) depolamak için Variant veri türünden FilePaths adlı bir değişken bildiriyoruz.

- Adım 3: Bu satırda, Çoklu Seçim Etkinleştirilmiş “Dosya Aç” İletişim Kutusunu kullanırız. Bu satır, metin dosyaları (*.txt) için bir filtre ve çoklu seçim etkinleştirilmiş “Dosya Aç” iletişim kutusunu görüntüler.
Seçilen dosya yolları, bir dizi dize olabilen FilePaths değişkeninde saklanır.

- Adım 4: Burada, birden fazla dosyanın seçilip seçilmediğini kontrol etmek için bir If ifadesi kullanıyoruz (yani, FilePaths bir dizidir).

- Adım 5: Birden fazla dosya seçildiyse, bu satır seçili dosya yollarını gösteren bir ileti kutusu görüntüler. Join, dizi öğelerini satır sonları olan tek bir dizede birleştirmek için kullanılır .

- Adım 6: Yalnızca bir dosya seçildiyse (dizi değil), bu satır bunun “False” (yani kullanıcının iptal etmemiş olması) olup olmadığını kontrol eder.

- Adım 7: Tek bir dosya seçildiyse, bu satırda MsgBox fonksiyonu ile seçili dosya yolunu gösteren bir mesaj kutusu görüntülenir.

- Adım 8: Hiçbir dosya seçilmemişse veya kullanıcı işlemi iptal etmişse, kodun bu bölümü hiçbir dosyanın seçilmediğini veya işlemin iptal edildiğini belirten bir mesaj kutusu görüntüler.

- Adım 9: Şimdi makroyu kaydedin ve kodu çalıştırın. Kod yürütüldüğünde, “Dosya Aç” iletişim kutusunu görüntüleyen bir pencere açılacaktır. Bu iletişim kutusu bir veya daha fazla metin dosyasını seçmenize olanak tanır.

Dosyaları seçip seçimi onayladıktan sonra, kod dosya yollarını yakalar. Birden fazla dosya seçilirse, yolları satır sonlarıyla ayrılmış bir mesaj kutusunda sunulur.

Hiçbir dosya seçilmemesi veya işlemin iptal edilmesi durumunda, kod “Dosya seçilmedi veya işlem iptal edildi” metninin bulunduğu bir mesaj kutusu görüntüler.

İşte tam kod:
Sub OpenMultipleFiles()
Dim FilePaths As Variant
FilePaths = Application.GetOpenFilename(“Metin Dosyaları (*.txt), *.txt”, , “Birden fazla dosya seç”, , True)
If IsArray(FilePaths) Then
MsgBox “Seçili Dosyalar: ” & Join(FilePaths, vbCrLf)
ElseIf FilePaths <> “False” Then
MsgBox “Seçili Dosya: ” & FilePaths
Else
MsgBox “Dosya seçilmedi veya işlem iptal edilmedi.”
End If
End Sub
Örnek 2 – Özel Dosya Filtresi
Bu örnekte, VBA GetOpenFilename filefilter metodunu kullanarak Excel çalışma kitaplarını açmayı kolaylaştırarak yalnızca Excel dosyaları için filtrelemenin nasıl yapılacağını göreceğiz.
- Adım 1: Yeni modülde, “OpenExcelFile” adında yeni bir alt rutin oluşturarak başlayın.

- Adım 2: Burada, seçilen dosya yolunu depolamak için Variant VBA veri türünden FilePath adlı bir değişken tanımlıyoruz .

- Adım 3: Bu satırda, Excel dosyaları (*.xls ve *.xlsx) için Özel Filtreli “Dosya Aç” İletişim Kutusunu görüntülüyoruz.
Daha sonra seçilen dosya yolu FilePath değişkeninde saklanır.

- Adım 4: Bu satırda, bir dosyanın seçilip seçilmediğini doğrulamak için bir "If" ifadesi kullanırız. Kullanıcının iletişim kutusunu iptal ettiği durumlarda, VBA GetOpenFilename yöntemi "False" dizesini döndürür.

- Adım 5: Bir dosya seçilmişse, bu kod satırı Workbooks.Open metodunu kullanarak seçilen Excel dosyasının açılmasını başlatır.

- Adım 6: Hiçbir dosya seçilmemişse veya kullanıcı işlemi iptal etmişse, kodun bu bölümü dosya seçiminin olmadığını veya işlemin iptal edildiğini bildiren bir mesaj kutusunun görüntülenmesini tetikleyecektir.

- Adım 7: Şimdi makroyu kaydedin ve çalıştır'a tıklayın.
“OpenExcelFile” kodunu çalıştırdığınızda, bir Excel dosyası (*.xls veya *.xlsx) seçmenize olanak tanıyan “Dosya Aç” iletişim kutusu açılır.

Bir dosya seçilir ve iptal edilmezse, seçilen dosya yeni bir Excel çalışma kitabında açılır.

Hiçbir dosya seçilmezse veya işlem iptal edilirse, “Dosya seçilmedi veya işlem iptal edildi” metninin bulunduğu bir mesaj kutusu görüntülenir.

İşte tam kod:
Sub OpenExcelFile()
Dim FilePath As Variant
FilePath = Application.GetOpenFilename(“Excel Dosyaları ( .xls; .xlsx), .xls; .xlsx”)
If FilePath <> “False” Then
Workbooks.Open FilePath
Else
MsgBox “Dosya seçilmedi veya işlem iptal edildi.”
End If
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- Kullanıcının dosya seçimini iptal ettiği durumlar için VBA'da uygun hata işlemeyi eklediğinizden emin olun .
- Kullanıcıların doğru dosyaları kolayca seçmelerine yardımcı olmak için açıklayıcı dosya filtreleri kullanın.
- VBA GetOpenFilename'in dönüş değeri, seçili dosya yollarını içeren bir dize veya dize dizisidir (MultiSelect True ise).
- VBA GetOpenFilename'e ikinci argüman olarak sağlayarak varsayılan bir dosya yolu belirtebilirsiniz.
- Dosya seçimini iptal etmek için kullanıcı iletişim kutusundaki “İptal” düğmesine tıklayabilir. Bu durumda, VBA GetOpenFilename “False” döndürür.
