Aç Diayolog Kutusu Nasıl Kullanılır?
Bu makalemizde sizlerle birlikte Dosya > Aç mönü komut sırasını izleyerek gerçekleştirdiğiniz dosya açma işlemini VBA kodları ile nasıl gerçekleştireceğinize dair bazı ip uçları vereceğiz. İp uçları vereceğiz diyorum çünkü buradaki amacımız dosya açmak değil, bir ya da birden fazla dosyayı seçerek bunlara ait dosya adı ve yolu bilgilerini okumaktır. Bunları yaptığınızda zaten ilgili dosya ya da dosyaları açmış sayılırsınız ki bunun için geriye fazla bir işlem kalmıyor.
Öncelikle belirtmek isterim ki biz burada Word nesne ve nesne kolleksiyonlarını kullanarak bazı işlemler yapmaktan bahsediyoruz. Yoksa daha önce Visual Basic ya da Visual Basic .NET eğitimi alan arkadaşlar varsa bunlar gayet iyi biliyorlar ki Windows dialoglarına erişmek için CommonDialog32.ocx vb. bir ocx nesnesinden de yararlanabiliriz. Peki biz ya da ben neden o nesneyi kullanmak yerine bu yöntemi tercih ediyorum? Aslında bu sorunun cevabı çok basit. Şayet bir ocx kullanırsanız hazırladığınız belgenin ikincil bir bilgisayarda da çalışmasını istiyorsanız bu durumda ilgili ocx nesnesini de belgenizle beraber taşımalı ve yabancı bilgisyarda şayet ilgili ocx yoksa bunu onun c:\windows\system32 klasörüne kopyalamalısınız vs.vs. Görüldüğü üzere uğraşmaya değmez. Bizim yöntemimizde ise ikincil bilgisayar bizim kullandığımız Ofis sürümün ya da daha yeni bir sürümü varsa sorun yok demektir. İnsanların virüs misali tükettikleri göz önüne alındığında benim gibi ofisXP ya da ofis2003 kullanan kaç kişi var bilinmez. (Bu arada ben gerçek yaşamımda daha ziyade LibreOffice kullanıyorum, böylece lisans vb. sıkıntılarım olmuyor. Burada yazılanlar çalıştığım lisede öğrenci arkadaşlara derslerde yaptırdığım uygulamalardır...)
Şimdi asıl mevzumuza gelelim,

  1. Önce kendinize boş ve yeni bir belge oluşturun
  2. Sonra gerekli makro güvenlik ayarlarını yapın
  3. Visual Basic araç çubuğunu kullanarak tasarım modunu etkinleştirin
  4. Belgenize iki adet düğme ekleyin ve aşağıda belirtilen özelliklerine yine aşağıda belirtilen değerleri girin
    1. Düğme  name: btnDosyaSec Caption: DOSYA SEÇ
    2. Düğme  name: btnCikis Caption: ÇIKIŞ
  5. Son olarak Alt+F11 ile kod sayfasına geçerek aşağıda verilen kodları yazın. Olmadı kaynak dosyayı indirin ve deneyin. Aslında "ben öğrenmek istiyorum..." diyorsanız bence oturun ve kodlayın daha faydalı olacaktır. Bu arada hemen her bir kod satırından önce o satırın işlevine dair küçük açıklamalar eklediğim için ayrıca kodları izah etme gereği duymuyorum. Şayet aklınıza takılan bir şey olursa bana mesaj atabilirsiniz. Ancak aşağıdaki düzeneğin çalışabilmesi için en az 2 paragrafa ihtiyaç vardır. Siz belge üzerinde her ne zaman Enter/Giriş tuşuna basarsanız word sizin için belgeye bir paragraf eklemiş olacaktır....

Private Sub btnCikis_Click()
'1. Acik belgeyi kaydetmeden cik
    Application.Quit wdDoNotSaveChanges
'2. Acik belgeyi kaydet ve  cik
'    Application.Quit wdSaveChanges
End Sub

Private Sub btnDosyaSec_Click()
'**********************************************************************************************************
'Kodlayan                       : Bilal SERT
'Tarih/ Zaman                 : 04/12/2013 - 10:07
'Amaç                            : Aç diyalog kutusunu görüntülemek, dosya seçmek ve
'                                      seçilen dosyaların tam ad, yol bilgisini almak
'Giriş/Çıkış                     : Yok
'Çağrıldığı yer                 :
'Çağıran                         :
'***********************************************************************************************************
Dim dosyaPenceresi As FileDialog
Dim secilen As Variant
Dim aralik As Range
'2. paragraftan son paragrafa kadar tum paragraflar siliniyor
With ThisDocument
   Set aralik = .Range(.Paragraphs(2).Range.Start, .Paragraphs(.Paragraphs.Count).Range.End)
End With
aralik.Delete
'2. paragraf ekleniyor
ThisDocument.Paragraphs.Add
If ThisDocument.Paragraphs.Count > 1 Then
    Set dosyaPenceresi = Application.FileDialog(msoFileDialogOpen)
    ' -1 Tamam dugmesine basildi
    ' 0 İptal dugmesine basildi
    '-2 Pencere kapat dugmesine basildi demektir.
    With dosyaPenceresi
    'varsayilan filtreler kaldiriliyor
    .Filters.Clear
    'Yeni filtre parametreleri ekleniyor....
    '.doc ve .rtf uzantılı dosyaların listelenmesi isteniyor.
    .Filters.Add "Word Belgeleri", "*.doc;*.rtf", 1
    'tüm dosyaların listelenmesi isteniyor
    .Filters.Add "Tüm dosyalar", "*.*", 2
    If .Show = -1 Then
        'secilen her eleman icin tekrar et
        For Each secilen In .SelectedItems
            ThisDocument.Paragraphs(2).Range.Text = _
            ThisDocument.Paragraphs(2).Range.Text & secilen & vbCrLf
        Next
    End If 'sonuc
    End With
End If 'Paragraphs.Count
End Sub

Yardımcı olması dileğiyle. Güç sizinle olsun...