• Çar. May 27th, 2026

Fatih ŞAHİN

Not defterim.

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.

Orecle Web Sitesi üzerinden

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir