[英]VBA code to fetch data from Mysql DB in Mac Excel 2011
我在 Windows 中使用 ADODB 代码从 Mysql 数据库中获取数据,并且工作正常。 但是,我似乎无法让我的 Excel 工作簿(使用 ADODB)与 Excel Mac 2011 一起使用。经过大量谷歌搜索后,我从 Actual tech 找到了一个 ODBC 连接器,并且能够使用 Microsoft Query 获取三行。 但我希望使用 VBA 代码完成此操作,但一直无法这样做。 有没有人让这个工作? 如果是的话,你能不能给我提供一个示例代码。 提前致谢 !!
PS:我知道有一个类似的现有问题,但答案中提供的链接不再有效。 因此,我提出了一个新问题
此外,如果有人需要通过 Microsoft Query 进行操作的链接,请访问以下链接: http : //www.agentjim.com/MVP/Excel/2011Relational7Queries.html
这是我在 Windows 中使用的代码:
Sub getMysqlDBdata()
Dim Cn As Object
Dim sqlQa as string
dim temparray1 as variant
Source = "MySQL"
mysql_driver = "MySQL ODBC 5.2 ANSI Driver"
sqlQa = "select * from test.TestTable;"
Set Cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Cn.Open "Driver={" & "MySQL ODBC 5.2 ANSI Driver" & "};Server=" & "127.0.01" & ";Database= test;UID=" & "root" & ";PWD=" & "12345"
rs.Open sqlQa, Cn, adOpenStatic
temparray1 = rs.GetRows()
rs.Close
Set rs = Nothing
End Sub
经过大量谷歌搜索后,我在 MSDN 中找到了Bryan Duchesne提供的示例代码:
Sub TestSqlConnection()
Dim sqlstring As String
Dim connstring As String
Dim sLogin As String
sLogon = "Uid=myUserID;Pwd=myPassowrkd;"
sqlstring = "select * from zitemloc"
connstring = "ODBC;DSN=myDSN;" & sLogon
ActiveSheet.Range("B1:t2000").Clear
Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
qt.Delete
Next qt
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("B1"), Sql:=sqlstring)
.BackgroundQuery = False
.Refresh
End With
Set qt = ActiveSheet.QueryTables(1)
Dim rowCount As Integer
rowCount = UBound(qt.ResultRange.Value)
Dim ix, iy As Integer
Dim data As Variant
Dim colCount As Integer
colCount = qt.ResultRange.Columns.Count
For ix = 1 To rowCount
If Not IsArray(data) Then
ReDim data(rowCount - 1, colCount - 1)
End If
For iy = 1 To qt.ResultRange.Columns.Count
data(ix - 1, iy - 1) = qt.ResultRange.Value2(ix, iy)
Next
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.