引用这个问题:Avoid new line seperators in mySQL query within VBA code , 我想执行 SQL
写在 textbox
中的语句在 Excel 文件中。
因此,我创建了一个 textbox
调用SqlQuery1
看起来像这样:
在 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
.你知道我需要改变什么才能让它工作吗?
最佳答案
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/