• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Değişken Access Dosyasından Excel'e

Katılım
7 Nisan 2012
Mesajlar
28
Excel Vers. ve Dili
Excel 2010
Sayın Excel üstadları,

Makro yazarken beni aşan bir konu ile karşılaştım, nette aradım ama bulamadım, yardımınıza ihtiyacım var.

Excel'e öncelikle Access'ten veri aktarmak istiyorum ancak verileri çekeceğim .mdb dosyasının ismi sabit değil, içindeki tablonun adı da sabit değil. Nette bulduğum örneklerde bunlar hep sabit verilmiş. Makro başlayınca input box ile masaüstündeki .mdb dosyasının adını gireceğim ve makro devamını kendi getirecek. Bunu nasıl yapabilirim?

Veyahut tabloyu Access'ten Excel'e aktardığım zaman "Table Name" bilgisini makro içindeki bir değişkene nasıl atarım?

Teşekkürler.
 
Bu dosya size yardımcı olabilir...

Not: Dosya Sn.Hamdi ÜNAL'a aittir...
 

Ekli dosyalar

Sayın Murat Bey,

Cevabınız için teşekkürler.
Örneği inceledim ama yaptığım makroya uyarlayamadım.
Benim yapmak istediğim, makroyu çalıştırınca masaüstündeki hangi .mdb dosyasından verileri excel'e aktaracağini sorsun ve aktarırken de hangi tabloyu seçeceğimi sorsun (.mdb dosyamda 2 tablo var). Sizin gönderdiğiniz örnekte sanırım .mdb dosyası seçimi yapılıyor ama tablo adı makroda sabit olarak belirtilmiş(MuhasebeHesaplari), ben onu da seçmek istiyorum. Tablo adını bir değişkene atamam mümkün mü?

Teşekkürler
 
Sayın Murat Bey

Gönderdiğiniz örnek uygulama ile verileri access'ten excel'e aktarmayı başardım.
Aşağıdaki kodu yazdım;

Kod:
Set Baglan = New ADODB.Connection
    Baglan.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\Documents and Settings\vollkhann\Desktop\" & mdbdosya & ".mdb"
    Set Kayit = New ADODB.Recordset
    Kayit.Open "SELECT * FROM [tbl_DETAIL_FW12]", Baglan, adOpenDynamic, adLockOptimistic
    Sheets("Sheet1").Select
    Range("A2").CopyFromRecordset Kayit
    Kayit.Close
    Baglan.Close
    Set Kayit = Nothing
    Set Baglan = Nothing

Yalnız aşamadığım 2 konu var hala:
1 - Sütunların başlıkları gelmiyor, gelmesi için ne yapmalıyım.
2 - "SELECT * FROM [tbl_DETAIL_FW12]", burada "tbl_DETAIL_FW12" kısmı değişken, tablo adı her access'te değişiyor, dolayısıyla her access'te kullanamıyorum. bu sorunu nasıl aşabilirim?

Teşekkürler.
 
Sütun başlıkları için şu kodları uyarlayabilirsiniz;
Kod:
For i = 0 To Kayit.fields.Count - 1
Sayfa1.Cells(1, i + 1).Value = Kayit.fields(i).Name
Next i
Sayfa1.Range("A2").CopyFromRecordset Kayit

Farklı (değişken) tablolardan şu şekilde veri alabilirsiniz;
Kod:
veritabani = combobox1.value
 "SELECT * FROM [" & veritabani & "]"
 
Sayın Murat Bey,

Teşekkürler, sayenizde başlıkları da sorunsuz bir şekilde aktardım.

İkinci konuyu henüz çözemedim.
Kod:
veritabani = combobox1.value
 "SELECT * FROM [" & veritabani & "]"

Verdiğiniz bilgiden; önce bir combobox oluşturmamı ve değişken tablo adlarını combobox'a atamamı ve buradan değişken veritabanı değerini seçmemi istediğinizi anladım, bilmiyorum doğru mu anladım?
 
Rica ederim Volkan Bey,

Önceki verdiğim kod, değişken tablolardan veri almak içindi, ama ilk gönderdiğim örnek değişken access dosyaları içindeki tek bir tablodan veri almak içindi...

Hangisini yapmak istiyorsunuz ?

Değişken access dosyaları içindeki değişken tablolardan mı verileri almak istiyorsunuz ?
 
Sayın Murat Bey,

Evet, tam olarak bunu istiyorum, yani Değişken access dosyaları içindeki değişken tablolardan verileri almak.

Değişken access dosyaları için, sizin gönderdiğiniz Mizan dosyasındaki kodu uyguladım ve masaüstündeki tüm mdb dosyalarını listbox'ta listeledim. Buradan mdb dosyasını seçiyorum, Değişken Access olayını böyle çözdüm, ama her access dosyasının içindeki tablo ismi birbirinden farklı. Yani kodda "SELECT * FROM [" & veritabani & "]" kısmında takılıyorum.

Çok teşekkürler.
 
Merhaba Murat Bey,

Uygulamayı inceledim, bu kodda da tablo adları makro içinde önceden "data" ve "Emre" olarak tanımlanmış. Ancak yaptığım makroda tablo isimlerini önceden bilme şansım bulunmuyor, örnek uygulamadaki gibi kodun içine tablo isimlerini giremiyorum.

Öyle bir kod var mı bilmiyorum ama bana makro çalışırken seçtiğim mdb dosyası içindeki tablo isimlerini çeken ve "SELECT * FROM [" & veritabani & "]" komutunda “veritabanı” yazan yere atamamı sağlayacak bir kod lazım sanırım.

Emeğiniz için teşekkürler.
 
En son gönderiğim dosya üzerinde deneyiniz...
UserForm_Initialize kodlarını silin...

Kod:
Private Sub UserForm_Activate()
    Call baglan
    Dim cat As Object, tbl As Object
    Set cat = CreateObject("adox.catalog")
    Set tbl = CreateObject("adox.table")
    cat.activeconnection = con
        For Each tbl In cat.tables
            If Len(tbl.Name) < 6 Then
                ComboBox1.AddItem tbl.Name
            End If
        Next tbl
End Sub
 
Son düzenleme:
Sayın Murat Bey,

Aradığım tam olarak buydu. Yaptığım makroya bunu uyarlamaya çalışacağım. Yardımlarınız için çok teşekkürler.
 
Rica ederim Volkan Bey, iyi günler...
 
Geri
Üst