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.
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
Vous devez vous connecter pour publier un commentaire.
32-bit OS
J'ai réussi à le faire fonctionner sur Windows XP de la machine virtuelle par téléchargement oracle fournisseur OLEDB à partir d'Oracle site officiel Oracle10g Fournisseur pour OLE DB Version 10.1.0.4.0.
Travail en cours lien OLEDB pour les anciens OS (32 bits)
Mais sachez qu'il sera de remplacer les JDK et JRE à la version inférieure (Elle peut être évitée en jouant avec la configuration xml - products.xml - je n'ai pas eu assez de santé mentale de la potion, j'ai donc fait le plein d'installer à la place). Ensuite, vous devez supprimer la référence à des variables d'environnement comme il peut apporter d'autres programmes.
Après l'installation, je me suis inscrit OraOLEDBxx.dll avec regsvc32
J'étais de la connexion à la bd oracle 11G avec excel 2003. 🙂
Chaîne de connexion
J'ai eu pour activer des extensions (ActiveX Data Object et d'enregistrer des bibliothèques). Ma fonction renvoyant la connexion a été:
OS 64 bits, mais 32 bits d'Office
Quand nos VMs migré vers 64 bits Windows 7 avec Excel 2010. Assurez-vous que vous allez télécharger ODAC - Oracle Data Access Components pour droite bits version de votre excel de l'installation car j'ai eu 32 bits d'excel est installé et a estimé qu'il était de 64 bits (windows 64-bit), donc j'ai donné naissance à essayer d'obtenir ce travail avec 64 bits ODAC version. Ensuite j'ai télécharger version 32 bits et il fonctionne comme avant. Pour l'installation il suffit de suivre les instructions d'installation inclus dans l'archive téléchargée dossier.
De travail en cours liens pour les ODAC sur Oracle site
je suis okey avec elle.. je voulais juste partager ce qui a été mon presque-semaine-longues luttes.. j'ai eu la même erreur que vous avez ici, lorsqu'il a essayé de l'utiliser 64-bit Dll 32 bits d'excel..
Qui a fait le tour , et sans source de données : dbConnectStr = "Provider=OraOLEDB.Oracle;Data Source=" & accueil & ":1521/" & sid & ";User Id=" & utilisateur & ";Mot de passe=" & pwd & ";" - Merci beaucoup
OriginalL'auteur Marcel Gent Simonis
Vous pouvez vous assurer que votre chaîne de connexion est exacte par la création d'un fichier texte avec la fin .udl puis fermez et ouvrez le fichier. Vous serez invité avec une interface utilisateur pour se connecter au serveur. Entrez vos informations, et de tester la connexion. Ensuite, si votre connexion fonctionne, fermez le fichier. Ouvrez ce fichier dans le format de texte et copiez la chaîne de connexion dans votre code. Assurez-vous également que votre bibliothèque de référence est sélectionné pour ADO. Cette ligne est fausse:
Ci-dessous est un échantillon que j'utilise pour tirer dans le sql à partir d'un texte et d'en extraire les résultats de texte.
OriginalL'auteur jbay