使用 Excel VBA 查询 MySQL Table,ODBC 连接

Query MySQL Table with Excel VBA, ODBC Connection

我在尝试从 MySQL 8.0 Table 中获取值时遇到了一些关于 Microsoft Excel 的问题。我有一些代码(如下)是从网上获得的,但我一直收到错误消息。
我对此很陌生,所以我需要一些帮助。

我在 Windows 10 上使用 64 位计算机。
时间线:
→ 我一周前下载了 MySQL,获得了 8.0 workbench 版本并安装了连接器 (Connector/ODBC 8.0.12 - X64)。
→ 我在 MySQL Workbench
中创建了一个名为 sap 的模式 → 我在 sap 中创建了一个名为 variance 的 Table 并填充了数据
到目前为止,一切都很好。
然后,我加载 Excel,获取 'Microsoft ActiveX Data Objects 6.1 Library' 和 'Microsoft Forms 2.0 Object Library' 创建一个模块并插入以下代码:

Sub MySQL()

Dim conn As New ADODB.Connection
Dim SQL As String
Dim rs As ADODB.Recordset

Set conn = New ADODB.Connection

conn.Open "DRIVER={MySQL ODBC 8.0 Driver}" _
& ";SERVER=" & "localhost" _
& ";DATABASE=" & "sap" _
& ";USER=" & "root" _
& ";PASSWORD=" & "password" _
& ";OPTION=3"

Set rs = New ADODB.Recordset

SQL = "SELECT * FROM sap.variance;"
rs.Open SQL, conn

ThisWorkbook.Sheets(1).Range("A1").CopyFromRecordset rs

rs.Close
Set rs = Nothing

End Sub

文件在我的电脑上,所以 localhost 对我有用,我也试过使用“127.0.0.1”
数据库(MySQL 的架构)称为 sap
我使用的用户是 root 用户
密码就是密码(不是真的,但我不是真的)

应该可以,不是吗? 然后,致命的部分:

[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定设备驱动程序”

调试突出显示行 'conn.Open ....

我做错了什么?

如果您的 Excel 是 64 位,您需要 MySQL odbc 64 位。如果你的 Excel 是 32 位,你需要 ODBC 32 位(即使你的 Windows 是 64 位)。

了解您的 Excel 是 32 位还是 64 位的简单方法,打开 Excel 和任务管理器。在 processus 选项卡中,查看 Excel 是否具有(32 位)后缀。