从Excel到Oracle问题的OLEDB连接

时间:2016-04-27 11:50:39

标签: sql oracle excel-vba ado vba

每个人,

过去两天VBA问题一直在扼杀我。我在Excel中有一个基于宏的模型,它通过OLEDB将数据集从Oracle收集到电子表格中。为了说明问题,我简单地在模型中创建了两个函数。一个使用ODBC(“odbc”),另一个使用OLEDB(“OraOLEDB”)。上周代码完全正常,并没有改变。

现在,但是我收到一条错误消息,指出“运行时错误'424':当我在子”OraOLEDB“中执行”conn.Open strCon“行时需要对象。无法建立连接因此,当我尝试使用该行代码建立与数据库的连接时,它会失败。有趣的是,通过ODBC,可以建立连接。“odbc”中的“conn.Open strCon”行成功执行,我能够建立与数据库的连接。

我没有更改Excel模型中的任何内容,但我最近确实有一堆Windows更新。我不知道是否损坏了任何东西。我想它可能有。我不想使用ODBC连接的原因是速度明显变慢。使用OLEDB,我的运行速度提高了10倍。如果你能提供帮助,请告诉我。

Sub odbc()
Dim conn As Object
Dim strCon As String

strCon = "Driver={Microsoft ODBC for Oracle}; 
          CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) 
             (HOST=xxx)(PORT=1521))
             (CONNECT_DATA=(SERVICE_NAME=xxx))); 
          uid=xxx;pwd=xxx;"

Set conn = CreateObject("ADODB.Connection")

conn.Open strCon

End Sub
Sub OraOLEDB()
Dim conn As Object
Dim strCon As String

strCon = "Provider=OraOLEDB.Oracle;
          Data Source=(DESCRIPTION =  (ADDRESS = (PROTOCOL = TCP)
             (HOST = xxx)(PORT = 1521)) 
             (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = xxx)));   
          User Id=xxx;Password=xxx"

Set conn = CreateObject("ADODB.Connection")

conn.Open strCon

2 个答案:

答案 0 :(得分:2)

我看到OLEDB连接的主机是modn-ast- fdb1 。 ...对于ODBC连接,您有modn-ast- tdb1 。 ......主人不应该一样吗?

答案 1 :(得分:1)

这意味着Set conn = CreateObject("ADODB.Connection")什么都不返回。检查ADODB.dll注册。或者你可以使用

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection

并且您将看到在编辑脚本而不等待运行时错误时ADODB是否可用。