如何连接 Excel 到 Oracle 数据库?

How to connect Excel to Oracle database?

我正在尝试使用 VBA 将 Excel 连接到我的 Oracle 数据库。

Sub dbConnect()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set con = New ADODB.Connection
    Set rs = New ADODB.Recordset

    strCon = "Driver={Microsoft ODBC for Oracle}; " & _
    "CONNECTSTRING=(description=(address=(protocol=tcp)(host=mydb.domain.com)(port=1522))(connect_data=(sid=mydb))); uid=user; pwd=pw;"
    con.Open (strCon)

End Sub

我收到一个错误。

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

我从其他人那里得知 questions and sources 问题很可能是使用了错误版本的 DSN。

但是,我不明白我需要做什么来修复它。

我的 Windows 是 64 位的,当我打开 ODBC 数据源管理器时,我看到以下内容(以及其他内容):

我该如何解决?连接字符串和 DNS 如何相互关联?我应该更改其中一个 DNS 的版本吗?如果是,我该怎么做?

编辑: 连接字符串是从我可以访问数据库的 Oracel SQL Developer 中的数据库连接复制的。

好的,我设法修复了它。我的 excel 是 64 位的,所以为了连接到数据库,我必须为我的连接创建一个也是 64 位的系统 DNS。为此,我必须转到 /Windows/system32 文件夹,选择文件 odbcad32 并在系统 DNS 下添加一个新的 DNS,其中包含我必须下载的 64 位驱动程序。假设我将 DNS 命名为 abc

然后我也将您在上面代码中看到的连接字符串更改为

strCon = "Data Source=abc;User=user;Password=pw"

根据this,我在上面post中使用的连接字符串不需要DNS,所以我不知道为什么它不起作用,但是在创建一个新的DNS之后如前所述,我切换到指定 DNS 的新连接字符串。

瞧,几个小时后我就可以连接到我的数据库了。

快速旁注:如上所述,我在 /Windows/system32 中编辑了 obcad32 文件。这是 64 位 DNS 的文件。在管理32位DNS的文件夹/Windows/SysWOW64中有一个同名的文件,所以如果你有和我一样的问题,注意你编辑的是哪个文件。