Windows Oracle Veritabanından Excele Veri Çekme, Excel Vba
Öncelikle herhangi bir kurulum yapmadan excel e oracle veritabanından veri çekmek istediğiniz nasıl bir sorunla karşılaştığınıza bakalım.
Veri sekmesi altından oracle veritabanını seçip ilerle dediğinizda alacağınız hata ” Önerilen sağlayıcı (‘Oracle.DataAccess.Client’) yüklü değil.” hatası olacaktır. Tamam dediğinizde yine bağlantı ekranı gelecektir ama herhangi bir sorgu çalışmayacak ve verileriniz gelmeyecektir.
Yine vba ile bağlanmak istediğinizde aşağıdaki gibi Run-time error ‘3706’ Sağlayıcı bulunamıyor. Düzgün yüklenmemiş olabilir. şeklinde hata alacaksınız.

Şimdi gelelim bağlantı ayarlarının yapılmasına.
https://www.oracle.com/tr/database/technologies/odac-downloads.html
gerekli dosyayı indiriniz.
Türkçe seçeneğini ekleyiniz.

değişiklik yapmaden next diyerek devam ediniz.
default olarak kurulum yerini belirliyor burada istediğiniz yolu belirleyebilirsiniz.


Burada bağlanacağınız oracle veritabanına ait bilgilerini giriniz.

Evet artık kurulum tamamlandı. Close deyio çıkn ve excel ile yine önce veri sekmesi altından veritabanından deyip oracle veritabanını seçiniz. Daha sonra hiç bir hata almadan aşağıdaki gibi bir ekranla karşılaşmanız gerekiyor. Burada gelişmiş seçenekler altında sorgunuzu da yazıp tamam dediğinizde sizdne oracle veritabanına nasıl bir bağlantı kuracağınızı soracak. Ben veritabanına ait kullanıcı ile işlemler yapacağım için o seçeneği seçip bilgileri girdim.

Daha sonra bağlan dediğimizde ben de ağ ile ilgili izin vermemi istedi. Sizde istemeyebilir çok önemli değil. Ama izin vermezseniz gerekir.
Evet aşağıdaki gibi verileri sorgu ile getirdi.
Şimdi aynısını vba ile deneyelim bakalım herhangi bir bağlantı sorunu yaşıyor muyuz.
Evet görüldüğü gibi herhangi bir sorun yaşamadan buradan da verilerimiz çektik.

Örnek oracle veritabanından veri çekmekte kullanılan vba kodları
Sub oracleconnect()
Dim conn As Object
Dim rs As Object
Dim strConn As String
Dim strSQL As String
Dim i As Integer
strConn = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=" & _
"(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521)))" & _
"(CONNECT_DATA=(SERVICE_NAME=VERİTABANIADI)));User Id=KULLANICIADI;Password=ŞİFRE;"
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open strConn
strSQL = "SELECT * FROM TANTT022"
rs.Open strSQL, conn
For i = 0 To rs.Fields.Count - 1
Sayfa1.Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
Sayfa1.Range("A2").CopyFromRecordset rs
'İlk satırı kalın yapalım ve genişliği otomatik ayarlasın
Sayfa1.Rows(1).Font.Bold = True
Sayfa1.Columns.AutoFit
rs.Close
conn.Close
MsgBox "Veri çekme işlemi tamamlandı."
Set rs = Nothing
Set conn = Nothing
End Sub
Olabildiği kadar sade ve basit anlatmaya çalıştım. Sorun yaşarsanız yorum olarak veya diğer iletişim kanallarından bana ulaşabilirsiniz.



