Excel Tablosunda SQL sorgusu – VBA
Bu yazımızda adım adım herhangi bir Excel tablosundan SQL sorgusu yardımıyla nasıl veri çekebileceğimizi göreceğiz. Böylelikle uzun VBA kodlarıyla yapabileceğimiz sorgulama veya filtreleme işlemlerini daha hızlı ve etkili bir biçimde yapıyor olacağız. Oluşturduğumuz uygulamayı buradan indirebilir, kodlara da “Kaynak Kodu” sekmesinden ulaşabilirsiniz.












Private Sub CommandButton1_Click()
Call SqlSorgusuListObjects ' Eklediğimiz metodumuzu çağırarak başlıyoruz
Dim cn As Object ' Bağlantı tanımlıyoruz
Dim rs As Object ' Recordset tanımlıyoruz
Dim strFile$, strCon$, strSQL$
strFile = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name ' Dosyamızın yolunu belirtiyoruz
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
' Connection string tanımlıyoruz
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = TextBox1.Text ' Sql sorgumuzu textboxtan aldık
rs.Open strSQL, cn ' recordsetimizi verilerle doldurduk
Do While Not rs.EOF ' Döngüyle sheetimize sorgudan dönen değerleri yazdırıyoruz
r = r + 1
For c = 1 To rs.Fields.Count
If r = 1 Then
ActiveSheet.Cells(r + 2, c + 6) = rs.Fields(c - 1).Name
Else
ActiveSheet.Cells(r + 2, c + 6) = rs.Fields(c - 1).Value
End If
Next
If Not r = 1 Then rs.MoveNext
Loop
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Sub SqlSorgusuListObjects()
Const Prefix = "Sql"
Dim x, WSh, i&
With ThisWorkbook
For Each WSh In .Worksheets
i = i + 1
For Each x In WSh.ListObjects
.Names.Add Prefix & i & x.Name, x.Range, True
Next
Next
End With
End Sub

