Excel Makrolarla Access Bağlantısı Yapmak (26.10.2016)
Bu uygulamamız için ihtiyacımız olan programlar Excel ve Access olacaktır. Bilgisayarda kayıtlı Rapor.xlsm ve içerisinde veri bulunan Veriler.accdb dosyalarını kullanacağız.
Rapor Excel dosyasında Alt+F11 tuşlarına basılarak Vusial Basic Editörüne Geçilir.
Inser menüsünden Module eklenerek gelen ekrana gerekli kodlar yazılır.
Kod yazımına başlamadan önce Access dosyasına bağlantı kurabilme için gerekli olacak Referanslar Tools menüsünden References sekmesinden eklenir.
Eklenmesi gereken referanslar:
Microsoft ActiveX Data Objects 2.8 Library
Microsoft DAO 3.6 Objects Library
Eklediğimiz modül içerisine öncelikle Access veritabanına bağlantı kuracağımız kodları yazlım.
Sub Access_Veri_Al()
Set baglanti = New ADODB.Connection
Connection kuracağımız baglanti adında değişken tanımladık
baglanti.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\Users\muhammet.tek\Desktop\Access Bağlantı\Veriler.accdb"
Veriler Access dosyasını açtık
Sql = "select * from Tbl_Satislar"
Veriler Access dosyasındaki Tbl_Satislar tablosundaki bütün alanları belirledik
Set rs = New ADODB.Recordset
rs.Open Sql, baglanti, 1, 3
Tbl_Satislar tablosundaki alanların üzerinde değişiklik, silme ve ekleme yapılacak şekilde açılmasını sağladık.
Artık Tbl_Satislar tablosundan bir alanı ifade etmek istediğimizde tanımlanan rs değişkeni kullanılacak.
End Sub
Access dosyasına bağlantı oluşturduk.
Sıra Veriler Access dosyasındaki Tbl_Satislar tablosundan verileri Excel sayfasına çekmekte.
Öncelikle bir döngü kurarak Tbl_Satislar tablosunun sonuna kadar dönmesi ve dönerken de verileri Excel sayfasına yazmasını sağlayacağız.
Bunun için kodun devamına:
İ=2
Do Until rs.EOF
Do until döngüsü kurduk ve rs yani Tbl_Satislar tablosunda en son boş kayda kadar dönmesi gerektiğini söyledik.
Range("A" & i).Value = rs.Fields("MusteriNo")
Range("B" & i).Value = rs.Fields("BayiAdi")
Range("C" & i).Value = rs.Fields("UrunAdi")
Range("D" & i).Value = rs.Fields("Adet")
Range("E" & i).Value = rs.Fields("Fiyat")
Range("F" & i).Value = rs.Fields("TesTarihi")
Excel sayfasındaki A,B,C,D,E ve F sütunlarına tablodaki MusteriNo, BayiAdi, UrunAdi, Adet, Fiyat ve TesTarihi alanlarındaki verilerin yazılmasını sağladık.
rs.MoveNext
Bu satırda kaydı yazdıktan sonra bir sonraki kayda geçmesini sağladık.
i = i + 1
Excel hücrelerini ifade ederken kullandığımız i değişkenini 1 artırarak bir alt satıra inmesini sağladık.
Loop
Döngüyü tamamladık.
rs.Close
baglanti.Close
Kurduğumuz Access ve tablo bağlantılarını kapattık.
Kodlamanın tüm hali:
Kod çalıştırıldığında Excel sayfasına Access dosyasındaki veriler aktarılacaktır.
Hazırladığımız makroyu bir düğmeye atarsak bu düğme sayesinde Access veritanındaki verileri istediğimiz zaman tekrar çekerek hazırladığımız raporları güncellemiş oluruz.
Muhammet TEK