尝试实现ExcelVBA:写入mysql数据库。
以下代码遇到运行时错误[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驱动程序将在安装DB产品时安装,因此它将与数据库相同。
不幸的是,这并不重要。
重要的是ODBC驱动程序与应用程序(例如Excel)正确匹配。
如果你有32位Excel,并安装64位MySQL,那没关系,但Excel将无法连接到MySQL(除了通过MySQL连接器,但这不是这里的目标)。您将无法编写Excel应用程序以通过ODBC从数据库中读取数据。
解决方案很简单。下载32位MySQL ODBC驱动程序(与MySQL位于同一位置)并安装。(它会告诉你"已经安装",因为它会看到64位版本,并询问你是否要卸载。说是。)
现在,32位Excel可以与32位ODBC驱动程序对话,后者可以与64位MySQL对话,以交换数据。
注意:据我所知,您只能安装一种类型的ODBC驱动程序(每个DB应用程序)。因此,如果你使用的是64位版本,也许是其他应用程序,你必须卸载它(这会中断对该应用程序的访问)才能安装32位版本,这样你才能使用Excel。
我有一台带32位Excel的64 Win机器。我尝试了不同的MySQLODBC驱动程序(5.1、5.2、5.3)。64位驱动程序对我来说不起作用,但32位ODBC驱动程序确实起作用。在微软知识库的某个地方,它提到Excel不能使用64位驱动程序。
我建议使用比你在帖子中提到的更新的:http://dev.mysql.com/downloads/connector/odbc/5.2.html
这个vba代码适用于我
Set oConn = New ADODB.Connection
With oConn
.ConnectionString = "Driver={MySQL ODBC 5.2 Unicode Driver};" & _
"Server=" & strServer & ";Port=3306;" & _
"Database=" & strDBName & ";" & _
"Uid=" & strUserID & ";" & _
"Pwd=" & strPasswd & ";Option=3;"
.open
end with