首页 > 解决方案 > 使用 VBA 执行在文本框中编写的 SQL

问题描述

参考这个问题:Avoid new line separators in mySQL query within VBA code,我想执行一个写在Excel 文件中的SQL语句。 因此,我创建了一个如下所示的调用:textbox
textboxSqlQuery1

在此处输入图像描述


VBA我提到的文本框中SqlString

Sub Get_Data_from_DWH ()

    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
        
    Set conn = New ADODB.Connection
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=XX.XXX.XXX.XX; DATABASE=bi; UID=testuser; PWD=test; OPTION=3"
    conn.Open
    
    SqlString = ThisWorkbook.Sheet1.Shapes("SqlQuery1").OLEFormat.Object.Text
                            
    Set rs = New ADODB.Recordset
    rs.Open strSQL, conn, adOpenStatic

    Sheet1.Range("A1").CopyFromRecordset rs
    
    rs.Close
    conn.Close
    
End Sub

不过,我runtime error 438上了SqlString
你知道我需要改变什么才能让它工作吗?

标签: mysqlsqlexcelvba

解决方案


Thisworkbook.Sheet1不是有效的对象路径,请尝试:

SqlString = ThisWorkbook.Sheets("Sheet1").Shapes("SqlQuery1").OLEFormat.Object.Text

要不就

SqlString = Sheet1.Shapes("SqlQuery1").OLEFormat.Object.Text

并确保工作表明确命名为“Sheet1”

另外,你需要改变

rs.Open strSQL, conn, adOpenStatic

对此:

rs.Open SqlString, conn, adOpenStatic

你可能应该使用

Dim SqlString as String

在例程开始时


推荐阅读