Fournisseur de Données ole db ne peut pas être trouvé VBA/Excel

Je suis presque pas familier avec VBA (ont eu des parcours de retour à l'école et c'est tout). Maintenant, j'ai besoin de vous connecter à la base de données Oracle (qui est en cours d'exécution sur le serveur distant) à partir de fichier Excel. J'ai goggled autour et a trouvé quelques exemples. Donc, il y a le code suivant que j'ai écrit jusqu'à présent:

    Sub Try()
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim chunk() As Byte
Dim fd As Integer
Dim flen As Long
Dim Main As ADODB.Parameter
Dim object As ADODB.Parameter
Stil = vbYesNo + vbCritical + vbDefaultButton1
Titel = "db connection test"
'   Meldung anzeigen.
Antwort = MsgBox("trying to connect to db", Stil, Titel, Hilfe, Ktxt)
' Connect to the database using ODBC [msdaora][ORAOLEDB.Oracle]Provider=ORAOLEDB.Oracle;
With cn
.ConnectionString = "Provider=ORAOLEDB.Oracle;Password=pass;User ID=usr;Data Source=host:port:sid"
.Open
.CursorLocation = adUseClient
End With
ret = cn.Execute("create table newtesttable (main integer, object oid)")
' Here is an example if you want to issue a direct
' command to the database
'
'Set cmd = New ADODB.Command
'With cmd
'    .CommandText = "delete from MYTABLE"
'    .ActiveConnection = cn
'    .Execute
'End With
'Set cmd = Nothing
'
' Here is an example of how insert directly into the
' database without using
' a recordset and the AddNew method
'
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
' cmd.CommandText = "insert into newtesttable(main,object) values(?,?)"
cmd.CommandText = "select * from test"
cmd.CommandType = adCmdText
' The main parameter
' Set main = cmd.CreateParameter("main", adInteger, adParamInput)
'main.Value = 100 '' a random integer value ''
'cmd.Parameters.Append main
' Open the file for reading
'fd = FreeFile
'Open "myBlobFile.txt" For Binary Access Read As fd
'flen = LOF(fd)
'If flen = 0 Then
'   Close
'  MsgBox "Error while opening the file"
' End
'End If
' The object parameter
'
' The fourth parameter indicates the memory to allocate
' to store the object
'  Set object = cmd.CreateParameter("object", _
'                                       adLongVarBinary, _
'                                       adParamInput, _
flen + 100)
'  ReDim chunk(1 To flen)
'  Get fd, , chunk()
' Insert the object into the parameter object
'  object.AppendChunk chunk()
'  cmd.Parameters.Append object
' Now execute the command
Set rs = cmd.Execute
'   Mldg = "test"
Stil = vbYesNo + vbCritical + vbDefaultButton1
Titel = "asdasdasd"
'   Meldung anzeigen.
Antwort = MsgBox(rs, Stil, Titel, Hilfe, Ktxt)
' ... and close all
cn.Close
Close
End Sub

Je crois qu'il y a beaucoup de problèmes dans ce code, mais pour le moment il échoue lorsque vous essayez d'exécuter .Ouvert, en disant, que "Provider cannot be found. It may not be properly installed". Après que j'ai découvert que j'ai besoin de télécharger et installer ORAOLEDB.dll. Je l'ai fait en installant ORAOledb11.dll (j'ai essayé à la fois 32 bits et 64 bits, tu ma machine est en 64 bits). Je l'ai installé en exécutant regsvr32 OraOLEDB11.dll.

Malheureusement le problème est toujours là. Alors, quelles pourraient être les étapes pour résoudre ce problème?
Je peux en quelque sorte de s'assurer que Oraoledb est correctement installé sur ma machine?

Des conseils seraient grandement appréciés.

Je pense que cela doit aider: dzone.com/snippets/excel-make-query-oracle En général, la connexion Oracle pour Excel est beaucoup plus complexe que, par exemple, "indigène", MSSQL. Bonne chance!
1 plus le lien qui m'a aidé il y a plusieurs mois: blog.mclaughlinsoftware.com/microsoft-excel/...
Aller dans Regedit et voir si la clé HKEY_CLASSES_ROOT\OraOLEDB.Oracle existe. Le pilote OLEDB n'est pas installé par défaut lors de l'installation d'un client Oracle (vous avez installé un Client Oracle n'est-ce pas?). D'ailleurs cette syntaxe est également à tort que la Source de Données est l'entrée dans le fichier TNSNAMES qui se réfère à votre base de données. Mais ce ne sera pas vous donner l'erreur que vous obtenez.
Merci pour vos réponses. J'ai mentionnés ci-dessus de la clé dans le registre.

OriginalL'auteur Alex K. | 2013-02-12