Connexion ODBC à une base Oracle en VBA

Pour se connecter à une base de données Oracle depuis une feuille Excel en VBA et requêter.

Créer une source ODBC pointant vers l’instance Oracle voulue.

Dans le code VBA.

    Dim instanceOracle As String
    Dim nbCasMax As Integer
    Dim nbTestsParCas As Integer

    ' Initialisation des variables
    instanceOracle = ThisWorkbook.Sheets("Param").Range("B1").Value
    nbCasMax = ThisWorkbook.Sheets("Param").Range("B2").Value
    nbTestsParCas = ThisWorkbook.Sheets("Param").Range("B3").Value

    ' Connexion à l'instance Oracle
    Set objSession = CreateObject("OracleInProcServer.XOraSession")
    Set objDatabase = objSession.OpenDatabase(instanceOracle, "login/password", 0)

    noLigne = 1
    For i = 3 To nbCasMax + 3
        cas = ActiveSheet.Range("A" & i).Value 

        If cas <> "" Then
            requete = "select no_dossier, o.num_complet_dans_voie, c.libelle, v.libelle, substr(c.codec, 1, 2) from reflet.optimum o, reflet.commune c, reflet.voie v where " & ActiveSheet.Range("B" & i).Value & " and o.codec = c.codec and o.codec = v.codec and o.codev = v.codev and rownum <= " & nbTestsParCas

            ThisWorkbook.Sheets("Param").Range("D1").Value = requete

            Set oraDynaSet = objDatabase.DBCreateDynaset(requete, 0)
            If oraDynaSet.RecordCount > 0 Then
              oraDynaSet.MoveFirst
                For x = 0 To oraDynaSet.RecordCount - 1
                    noLigne = noLigne + 1
                    ThisWorkbook.Sheets("Resultats").Range("C" & noLigne).Value = oraDynaSet.Fields(0).Value
                    ThisWorkbook.Sheets("Resultats").Range("H" & noLigne).Value = oraDynaSet.Fields(1).Value
                    oraDynaSet.MoveNext
                Next
            End If
        End If
    Next

    Set objSession = Nothing
    Set objDatabase = Nothing

Laisser un commentaire