VBA ve SQL ile Harici Veritabanlarına Bağlanma (ADO)
Excel hücrelerine verileri manuel olarak girmek veya dışa aktarılmış sistem dosyalarını kopyala-yapıştır ile taşımak ilkel ve hataya açık bir yöntemdir. VBA ile ADO (ActiveX Data Objects) kütüphanesini kullanarak Excel'i doğrudan SQL Server, MySQL, Oracle veya Access veritabanlarına bağlayabilir, şirketin canlı verilerini tek tuşla raporlarınıza çekebilirsiniz.
Bu otomasyon mimarisinde iki temel nesneye ihtiyacımız vardır: Connection (Veritabanının kapısını açan köprü) ve Recordset (SQL sorgumuzun sonucunda dönen verileri taşıyan sepet). Kurumsal firmalarda tüm anlık finans ve stok raporları bu yöntemle saniyeler içinde oluşturulur.
Bağlantı Kurma ve SELECT Sorgusu Gönderme
Bir bağlantı dizesi (Connection String) ile sisteme giriş yapılır, ardından yazılan standart bir SELECT sorgusu çalıştırılır. Dönen veriler CopyFromRecordset komutu ile Excel hücresine tek seferde şimşek hızında dökülür (For döngüsüne gerek kalmaz).
SQL Veri Çekme (ADO) Kod Kalıbı
Dim baglanti As Object, kayitlar As Object
Set baglanti = CreateObject("ADODB.Connection")
Set kayitlar = CreateObject("ADODB.Recordset")
' Veritabanı kapısını aç
baglanti.Open "Provider=SQLOLEDB;Data Source=SUNUCU_IP;Initial Catalog=MusteriDB;User ID=admin;Password=123;"
' SQL Sorgusunu çalıştır ve verileri al
kayitlar.Open "SELECT ID, AdSoyad, Bakiye FROM CariHesaplar", baglanti
' Verileri Excel'e tek hamlede yapıştır
Sayfa1.Range("A2").CopyFromRecordset kayitlar
kayitlar.Close: baglanti.Close