mysql - 使用 VBA 执行在文本框中编写的 SQL

标签 mysql sql excel vba

引用这个问题:Avoid new line seperators in mySQL query within VBA code , 我想执行 SQL写在 textbox 中的语句在 Excel 文件中。
因此,我创建了一个 textbox调用SqlQuery1看起来像这样:
enter image description here

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 438SqlString .
你知道我需要改变什么才能让它工作吗?

最佳答案

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
在例程开始时

关于mysql - 使用 VBA 执行在文本框中编写的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63846063/

相关文章:

vba - 尝试通过 Excel VBA 宏保存 GIF 屏幕截图时出错

excel - 如果有 2 个连续的空行,则删除行

sql - 如何从一个表的行获取值到另一个表的列

sql - 在常规订购之前定制订购?

php - MySQL 从 PHP 中重命名列

iphone - 在 MySQL 中的何处存储 AES_ENCRYPT 的 key ?

mysql - 通过链接表将某些数据从一个表的列复制到另一个表

excel - 如何在Excel中具有特定条件的字符串中查找子字符串

python - 如何在 DJANGO 2.2 上进行多个字符串查询

mysql - solr 增量导入 "fetches"但不导入 "process"