尝试实现 Excel VBA: writing to mysql database .
以下代码遇到运行时错误[MIcrosoft][ODBC Driver Manager] Data source name not found and no default driver specified
Dim cn As Object
Sub Connect()
Dim strCon as string
Set cn = CreateObject("ADODB.connection")
strCon = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=dbname;" & _
"USER=root;" & _
"PASSWORD=mypass;" & _
"Port=3306;" & _
"Option=3"
cn.Open strCon
cn.Close
End Sub
使用以下 php 代码检查连接参数
$mysqli = new mysqli('localhost','root','mypass','dbname');
一切正常。
我在我的 VBA 项目引用中勾选了 Microsoft ActiveX Data Objects 2.8 Library
。
欢迎任何帮助。
最佳答案
无论此时它值多少钱(因为我刚遇到它,我花了一天时间才弄明白):
您可能拥有 32 位或 64 位形式的 MySQL(或其他数据库/应用程序)。 您可能拥有 32 位或 64 位形式的 Excel(或其他应用程序)。 您可能以 32 位或 64 位形式在两者之间建立 ODBC“连接”。
通常,ODBC 驱动程序会在您安装数据库产品时安装,因此它与数据库相同。
不幸的是,这并不重要。
重要的是 ODBC 驱动程序与应用程序(例如 Excel)正确匹配。
如果您有 32 位 Excel,并安装 64 位 MySQL,那很好,但是 Excel 将无法连接到 MySQL(除非通过 MySQL 连接器,但这不是这里的目标)。 您将无法编写 Excel 应用程序以通过 ODBC 从数据库中读取数据。
解决方法很简单。下载 32 位的 MySQL ODBC 驱动程序(与 MySQL 在同一位置),并安装它。 (它会告诉你“已经安装”——因为它会看到 64 位版本——并询问你是否要卸载。说是。)
现在,32 位 Excel 可以与 32 位 ODBC 驱动程序对话,后者可以与 64 位 MySQL 对话,以交换数据。
注意:据我所知,您只能安装一种类型的 ODBC 驱动程序(每个数据库应用程序)。因此,如果您使用的是 64 位版本,也许对于某些其他应用程序,您必须卸载它(这会中断对该应用程序的访问)才能安装 32 位版本,以便您可以使用 Excel。
关于mysql - Excel-Vba 连接 Mysql localhost 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750508/