VBA如何连接Excel中的MySQL数据库?

VBA如何连接Excel中的MySQL数据库?,mysql,excel,vba,Mysql,Excel,Vba,在PHP中做类似的事情,我可以成功登录MySQL服务器。 我已经安装了ODBC连接器。 但是在上面的VBA代码中,我失败了。 出现了一个错误。(请参阅存在错误的代码) 这段vba对我有用: 子连接() 将密码设置为字符串 作为字符串的Dim SQLStr 'OMIT Dim Cn语句 Dim服务器名称为字符串 将用户ID设置为字符串 Dim数据库名称为字符串 '省略Dim rs语句 设置rs=CreateObject(“ADODB.Recordset”)“EBGen每日 服务器名称=范围(“b2

在PHP中做类似的事情,我可以成功登录MySQL服务器。 我已经安装了ODBC连接器。 但是在上面的VBA代码中,我失败了。 出现了一个错误。(请参阅存在错误的代码)


这段vba对我有用:

子连接()
将密码设置为字符串
作为字符串的Dim SQLStr
'OMIT Dim Cn语句
Dim服务器名称为字符串
将用户ID设置为字符串
Dim数据库名称为字符串
'省略Dim rs语句
设置rs=CreateObject(“ADODB.Recordset”)“EBGen每日
服务器名称=范围(“b2”)。值
数据库名称=范围(“b3”)。值“数据库名称”
用户ID=范围(“b4”)。值“ID”用户或用户名
密码=范围(“b5”)。值“密码”
SQLStr=“从ComputingNotesTable中选择*
Set Cn=CreateObject(“ADODB.Connection”)'新语句
Cn.Open“Driver={MySQL ODBC 5.2.2 Driver};Server=“&”
服务器名称和“数据库=”数据库名称和_
“Uid=“&User_ID&”Pwd=“&Password&;”
rs.开放式SQLStr、Cn、adOpenStatic
Dim myArray()
myArray=rs.GetRows()
kolumner=UBound(myArray,1)
rader=UBound(myArray,2)
对于K=0到kolumner,将显示“使用For循环数据”
范围(“a5”).偏移量(0,K).Value=rs.Fields(K).Name
对于R=0至rader
范围(“A5”)。偏移量(R+1,K)。值=myArray(K,R)
下一个
下一个
rs.Close
设置rs=无
Cn.Close
设置Cn=Nothing
端接头

启用Microsoft ActiveX数据对象2.8库

$connect = mysql_connect("sql100.xtreemhost.com","xth_9595110","myPassword") or die(mysql_error());

mysql_select_db("myTable",$connect);

其余部分如下:

Ranjit的代码导致了与Tin报告的相同的错误消息,但在使用我正在运行的ODBC驱动程序更新Cn.open后仍然有效。检查ODBC数据源管理员中的“驱动程序”选项卡。我的名字是“MySQL ODBC 5.3 Unicode驱动程序”,所以我相应地进行了更新。

对于偶然发现同样问题的人来说,这只是一个旁注。。。我的操作系统是64位的-所以我当然下载了64位MySQL驱动程序。。。但是,我的Office应用程序是32位的。。。下载了32位版本后,错误消失了,我可以继续前进。

用最新的答案更新本主题,该解决方案适用于我的MySQL Connector/ODBC 8.0版本(下载地址:

最重要的是检查安装的驱动程序的正确名称和版本:
HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC驱动程序\

已启用数据对象库。我想知道如果SERVER=localhost,应用程序如何知道我的SQL SERVER在xtreemhost SQL上?仍然有相同的错误:“运行时错误-2147467259(80004005)自动化错误未指定错误”我尝试了这个,得到了错误:“未找到数据源名称,未指定默认驱动程序”感谢您的代码。但我一直被困在其中,我不知道服务器应该是什么。我正在使用Xtreemhost的MySQL,我一直在使用“sql100.Xtreemhost.com”。Xtreemhost支持人员说这是服务器的名称。那我该怎么办?你试过把你的服务器名放在excel工作表的b2单元格吗?是的,我试过了,假设服务器名是“sql100.xtreemhost.com”,但是对于驱动程序,我写了这样的代码:“driver={MySQL ODBC 5.1.11 driver}”,根据我机器上的版本。我被困在“Cn.Open”中,错误是相同的:“运行时错误-2147467259(80004005)自动错误未指定错误”Cn.Open告诉连接中有错误,有时字符将不被接受!!在excel工作表单元格b2=sql100.xtreemhost.com中键入服务器名称后,编辑宏代码-在服务器名称之前添加一个代码---->server='“&server\u name&”“是否已创建odbc数据源??并检查了测试连接??什么驱动程序?你从哪里下载的?我很抱歉,但我对尝试让excel与MySQL对话还不熟悉。我有相同的设置,使用64位计算机和32位Office,因此我怀疑我的问题可能与您的问题类似。可以在找到驱动程序。即使我更新了正在运行的驱动程序,但在激活Microsoft ActiveX Data Objects 6.1库之前,这对我不起作用。为此,在VBE中,您需要转到“工具/引用”并检查Microsoft Active X数据对象X库
$connect = mysql_connect("sql100.xtreemhost.com","xth_9595110","myPassword") or die(mysql_error());

mysql_select_db("myTable",$connect);
Dim oConn As ADODB.Connection 
Private Sub ConnectDB()     
Set oConn = New ADODB.Connection    
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _        
"SERVER=localhost;" & _         
"DATABASE=yourdatabase;" & _        
"USER=yourdbusername;" & _      
"PASSWORD=yourdbpassword;" & _      
"Option=3" 
End Sub
Public oConn As ADODB.Connection
Sub MySqlInit()
    If oConn Is Nothing Then
        Dim str As String
        str = "Driver={MySQL ODBC 8.0 Unicode Driver};SERVER=xxxxx;DATABASE=xxxxx;PORT=3306;UID=xxxxx;PWD=xxxxx;"
        Set oConn = New ADODB.Connection
        oConn.Open str
    End If
End Sub