我需要通过 Excel VBA 连接到 Oracle 数据库。
我在 VBA 中添加了“Micorost ActiveX Data Objects 6.1”库。
由于我使用的是 64 位版本的 Excel(在 64 位 Windows 10 中),我认为我无法使用“Microsoft ODBC for Oracle”(似乎仅限 32 位);这就是为什么我将“Oracle InstantClient v21.3”(InstantClient Basic、InstantClient ODBC 和 InstantClient SDK;全部适用于 Windows x64)安装到“D:\D:\Program Files\Oracle ODBC”中,然后使用提供的“odbc_install.exe”。
我已将该文件夹添加到系统 PATH 和 TNS_ADMIN 系统变量中。
我的TnsName.ora具有以下数据库定义:
DATAVIEW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.x.x.x)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = **MyStats**)
)
)
我可以使用“PL SQL”连接到该数据库,并且每当我在 Windows 10 的“ODBC 数据源管理器(64 位)”中添加条目时,我都可以连接到该数据库。此外,使用 Excel 本身中的“数据 --> 获取数据 --> 从其他来源 --> 从 ODBC”选项,我可以在列表中看到“MyStats”数据库并可以连接到它。
我正在尝试使用 Excel VBA 中的以下代码连接到该数据库:
Dim Database_Connection As ADODB.Connection
Dim Record_Set As ADODB.Recordset
Dim Database_Connection_String As String
Set Database_Connection = New ADODB.Connection
Set Record_Set = New ADODB.Recordset
Database_Connection_String = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.x.x.x)(PORT=1521)))(CONNECT_DATA=(SID=MyStats)(SERVER=DEDICATED)));User Id=MyName;Password=MyPass;"
With Database_Connection
.ConnectionString = Database_Connection_String
.Open
End With
这会遇到不同的运行时错误(在“.Open”行中)。
我尝试提供“Provider=OraOLEDB.Oracle”、“Driver=Oracle in Oracle ODBC”。我尝试了基于 TNS 的字符串和独立字符串(给出“Data Source=”、“Server=”、“DBQ=”和...)。我要么收到运行时错误 3706(表示提供程序未知),要么收到运行时错误 -2147217805 (80040e73)。
我搜索了很多论坛并阅读了很多示例。他们依赖于 Microsoft ODBC for Oracle(这是我不想使用的),或者让代码以某种我无法复制的方式运行。
我可以在连接字符串或驱动程序中给出不同的“Provider”名称吗?
如果您能给我基于 TNS 的字符串和独立字符串,我将不胜感激。
有类似的问题,但经过长时间的研究,我能够用这样的连接字符串解决它:
Dim Cn As New ADODB.Connection
With Cn
.ConnectionString = "Driver={Oracle in instantclient_21_3};" & _
"DBQ=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<service_name>)));UID=<user_name>; PWD=<password>;"
Call .Open
End With
请相应地更改 <...> 值。
要使用 VBA 从 Excel 连接到 Oracle 数据库,您需要使用 Oracle Provider for OLE DB 或 ODBC 驱动程序。确保连接字符串准确且与您的数据库配置匹配。 高知的 android 开发课程 您可能需要根据您的设置调整提供程序或语法。这应该可以帮助您开始使用 VBA 将 Excel 连接到 Oracle 数据库。