首页 > 解决方案 > Excel - 在从 MySQL 数据库查询中使用可变单元格值 (Sheet1!A2)

问题描述

我正在尝试根据 Excel 工作簿 Sheet1 中单元格 A2 的值将变量值添加到查询编辑器中的以下 MySQL 查询中:

SELECT o.Name, o.OrganizationId

FROM Organization AS o

WHERE o.OrganizationId = Sheet1!A2

ORDER BY o.Name ASC

我试过使用自定义参数,但它似乎不适用于 MySQL 查询。

我尝试通过 VBA 脚本运行查询的另一件事:

Sub VoucherQuery()
queryString = "SELECT Name, OrganizationId FROM [Vouchers!$A1:B1000000] 
WHERE OrganizationId=" & Worksheets("Sheet1").Range("A2").Value
End Sub

但无法将其与我查找的查询结合起来

最后一次尝试让我创建了一个新的工作簿并从工作簿获取数据,在那里我使用原始 SQL 查询(与上述相同的查询,没有 WHERE 子句)从工作簿中提取数据,并尝试添加一个条件,但我不能'找不到任何代码来使用这种提取数据的方式进行编辑。

有谁知道如何使用 Get Data -> From MySQL Database Query Editor in Excel 来实现这一点?

标签: mysqlexcelvba

解决方案


不确定查询编辑器,但这个宏应该适合你的情况。

只需要在评论下填写您的连接信息并在查询字符串中"fill these out below"替换为您的实际架构schema

Sub SendQuery()
    Dim conn As Object
    Dim rs1 As Object
    Dim sqlstr As String
    Dim val, server_name, database_name, user_id, password As String

    Set conn = CreateObject("ADODB.Connection")
    Set rs1 = CreateObject("ADODB.Recordset")

    val = Trim(CStr(ThisWorkbook.Worksheets("Sheet1").Range("A2").Value))

    ' fill these out below
    server_name = ""
    database_name = ""
    user_id = ""
    password = ""

    ' connect to database
    conn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" _
        & ";SERVER=" & server_name _
        & ";DATABASE=" & database_name _
        & ";UID=" & user_id _
        & ";PWD=" & password _
        & ";OPTION=3"

    ' setup select string
    sqlstr = "SELECT o.Name, o.OrganizationId FROM schema.Organization As o WHERE o.OrganizationId = '" & val & "' ORDER BY o.Name ASC"

    ' send query
    rs1.Open sqlstr, conn, adOpenStatic

    ' copy data to sheet
    With ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
        .ClearContents
        .CopyFromRecordset rs1
    End With

    ' cleanup
    rs1.Close
    Set rs1 = Nothing
End Sub

推荐阅读