Excel 找不到提供程序。当使用ADO驱动程序而不是DAO时,它可能没有正确安装

Excel 找不到提供程序。当使用ADO驱动程序而不是DAO时,它可能没有正确安装,excel,vba,odbc,ado,dao,Excel,Vba,Odbc,Ado,Dao,我在Windows 10计算机上安装了Oracle ODBC即时客户端12,以便将Excel宏连接到Oracle数据库。我的应用程序能够使用DAO或ADO驱动程序连接到Oracle数据库。DAO可以很好地连接到数据库,但是当我尝试使用ADO驱动程序时,会出现以下错误: 找不到提供程序。它可能未正确安装 如何在Excel宏中设置ADO连接: Set Connection = VBA.CreateObject("ADODB.Connection") Connection.ConnectionStri

我在Windows 10计算机上安装了Oracle ODBC即时客户端12,以便将Excel宏连接到Oracle数据库。我的应用程序能够使用DAO或ADO驱动程序连接到Oracle数据库。DAO可以很好地连接到数据库,但是当我尝试使用ADO驱动程序时,会出现以下错误:

找不到提供程序。它可能未正确安装

如何在Excel宏中设置ADO连接:

Set Connection = VBA.CreateObject("ADODB.Connection")
Connection.ConnectionString = IDatenbank_BuildConnectionString(ODBCConnection)
Call Connection.Open


IDatenbank_BuildConnectionString = "ODBC" & _
                                    ";DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password
关于如何使用ADO驱动程序和避免错误“找不到提供程序。它可能未正确安装”的任何建议

Excel 2016在用作服务器的Windows 10计算机上以32位运行。Microsoft ODBC作为Excel实例安装在32位上

我到目前为止所做的:

  • 已安装Oracle客户端,用于ODBC 32位
  • 已安装32位Access数据库引擎
  • Microsoft数据访问组件(MDAC)
在客户端计算机中,它们可以一起运行,但在使用服务器时似乎不是这样。

如果使用标准Oracle ODBC,则连接字符串前面不需要“ODBC”

从您的代码中,它包含“ODBC”:

如果使用标准的Oracle ODBC,则连接字符串前面不需要“ODBC”

从您的代码中,它包含“ODBC”:


如果不向我们展示由
IDatenbank\u BuildConnectionString(ODBCConnection)
返回的odbc字符串,我们无法告诉您太多!我已经添加了关于连接字符串的详细信息,但是我提到,相同的连接字符串在使用ADO驱动程序的客户机上工作没有任何问题,但在使用ADO的服务器机器上不工作(只有DAO在服务器机器上工作)。在第3ODBC行中添加
debug.print connection.ConnectionString
;DSN=美国公司Int;Uid=ALA1Bala;Pwd=hihihihinext步骤是查看DSN文件的内容,并查看是否安装了指定的驱动程序。如果不向我们显示IDatenbank_BuildConnectionString(ODBCConnection)返回的odbc字符串,我们无法告诉您太多!我已经添加了关于连接字符串的详细信息,但是我提到,相同的连接字符串在使用ADO驱动程序的客户机上工作没有任何问题,但在使用ADO的服务器机器上不工作(只有DAO在服务器机器上工作)。在第3ODBC行中添加
debug.print connection.ConnectionString
;DSN=美国公司Int;Uid=ALA1Bala;Pwd=hihinext步骤是查看DSN文件的内容,并查看是否安装了指定的驱动程序。
'ODBC;DSN=xxx;Uid=yyy;Pwd=zzz
IDatenbank_BuildConnectionString = "ODBC" & _
                                    ";DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password

'It should be "DSN=xxx;Uid=yyy;Pwd=zzz" only without "ODBC" in front
IDatenbank_BuildConnectionString = "DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password