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

Dim oConn As ADODB.Connection Private Sub ConnectDB() Set oConn = New ADODB.Connection Dim str As String str = "DRIVER={MySQL ODBC 5.2.2 Driver};" & _ "SERVER=sql100.xtreemhost.com;" & _ "PORT=3306" & _ "DATABASE=xth_9595110_MyNotes;" & _ "UID=xth_9595110;" & _ "PWD=myPassword;" & _ "Option=3" ''' error ''' oConn.Open str End Sub Private Sub InsertData() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ConnectDB sql = "SELECT * FROM ComputingNotesTable" rs.Open sql, oConn, adOpenDynamic, adLockOptimistic Do Until rs.EOF Range("A1").Select ActiveCell = rs.Fields("Headings") rs.MoveNext Loop rs.Close oConn.Close Set oConn = Nothing Set rs = Nothing End Sub 

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

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

Ranjit的代码导致了与Tin报告相同的错误信息,但是在使用正在运行的ODBC驱动程序更新Cn.open之后工作。 检查ODBC数据源pipe理器中的驱动程序选项卡。 我说“MySQL的ODBC 5.3 Unicode驱动程序”,所以我相应地更新。

这个vba为我工作:

 Sub connect() Dim Password As String Dim SQLStr As String 'OMIT Dim Cn statement Dim Server_Name As String Dim User_ID As String Dim Database_Name As String 'OMIT Dim rs statement Set rs = CreateObject("ADODB.Recordset") 'EBGen-Daily Server_Name = Range("b2").Value Database_name = Range("b3").Value ' Name of database User_ID = Range("b4").Value 'id user or username Password = Range("b5").Value 'Password SQLStr = "SELECT * FROM ComputingNotesTable" Set Cn = CreateObject("ADODB.Connection") 'NEW STATEMENT Cn.Open "Driver={MySQL ODBC 5.2.2 Driver};Server=" & _ Server_Name & ";Database=" & Database_Name & _ ";Uid=" & User_ID & ";Pwd=" & Password & ";" rs.Open SQLStr, Cn, adOpenStatic Dim myArray() myArray = rs.GetRows() kolumner = UBound(myArray, 1) rader = UBound(myArray, 2) For K = 0 To kolumner ' Using For loop data are displayed Range("a5").Offset(0, K).Value = rs.Fields(K).Name For R = 0 To rader Range("A5").Offset(R + 1, K).Value = myArray(K, R) Next Next rs.Close Set rs = Nothing Cn.Close Set Cn = Nothing End Sub 

只是一个旁注,任何人都绊倒在这个相同的查询…我的操作系统是64位 – 所以我当然下载了64位的MySQL驱动程序…但是,我的Office应用程序是32位…一旦我下载32位版本,错误消失,我可以前进。

启用Microsoft ActiveX数据对象2.8库

 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 

其余的在这里: http : //www.heritage-tech.net/908/inserting-data-into-mysql-from-excel-using-vba/