使用VBA将mySQL数据库中的值提取到Excel中
我已经在我的计算机上安装了mySQL服务器,并创建了名为使用VBA将mySQL数据库中的值提取到Excel中,mysql,excel,vba,Mysql,Excel,Vba,我已经在我的计算机上安装了mySQL服务器,并创建了名为Sales的数据库,其中包含一个名为Orders的表。您还可以在SQL FIDLE中找到该表: 然后我创建了一个Excel文件并激活了Microsoft ActiveX Data Objects 2.8库 现在我想连接到上面的数据库,并使用以下VBA脚本从中提取数据: Sub ConnectDB() Set conn = New ADODB.Connection conn.ConnectionString = "DRIVER={MySQL
Sales
的数据库,其中包含一个名为Orders
的表。您还可以在SQL FIDLE
中找到该表:
然后我创建了一个Excel文件并激活了Microsoft ActiveX Data Objects 2.8库现在我想连接到上面的数据库,并使用以下
VBA
脚本从中提取数据:
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
Sheet1.Range("A1").Value = rs
End Sub
然而,当我运行这个VBA时,我得到运行时错误3704。据我所知,这个错误可能是由以下几行引起的:
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
因为如果我删除它们,VBA运行时不会出现错误
要从mySQL数据库中提取数据,我需要在代码中更改什么?您的连接未打开 试试这个
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
conn.open
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
Sheet1.Range("A1").Value = rs
End Sub
不要使用
Execute
——这是用于在数据库上运行命令,而不是用于返回记录集
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
conn.Open
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM sales.orders;", conn
Sheet1.Range("A1").Value = rs
End Sub
如果字符串字段返回的内容看起来像垃圾,那么您还需要做更多的工作。像这样尝试一下
Dim oConn As ADODB.Connection
然后
最后
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectDB
Requete = "SELECT * FROM sales.orders;"
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
oConnect.Close
Set Rs = Nothing
End Sub
非常感谢您的回答。当我尝试它时,我得到运行时错误-2147467259(80004005)
Execute
用于更新数据库,而不是返回记录集。@braX,此代码“conn.open+conn.Execute”在我这方面工作得非常好(我有另一个数据库,因此有另一个连接字符串)。谢谢你的回答。我试图运行它,但也得到运行时错误-2147467259(80004005)。当我检查代码时,此错误出现在conn.Open行。是否有一些设置需要更改以使conn.Open正常工作?我使用的是Office 2007。是否需要一个特定的(旧的)字符串连接?如果您甚至无法用它打开到数据库的连接,那么连接字符串可能就是问题所在,因此您使用的Office版本无关紧要。
Private Sub ConnectDB()
Set oConn = New ADODB.Connection
Dim str As String
str = "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=XXX.XXX.XXX.XXX replace with your IP address" & ";" & _
"PORT=replace with the port you are using, usually 3306" & ";" & _
"DATABASE=replace with the name of your databese" & ";" & _
"USER=replace with the username you are using to connetc yourself to the databes" & ";" & _
"PASSWORD=replace with password you are using to connect to the databse" & ";" & _
"Option=3"
oConn.Open str
End Sub
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectDB
Requete = "SELECT * FROM sales.orders;"
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
oConnect.Close
Set Rs = Nothing
End Sub