Kurumsal IT-Teknoloji Eğitimleri-Eğitim Takvimi

Excel Makrolarla Access Bağlantısı Yapmak

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