mysql - 使用 VBA 执行在文本框中编写的 SQL
问题描述
参考这个问题:Avoid new line separators in mySQL query within VBA code,我想执行一个写在Excel 文件中的SQL
语句。
因此,我创建了一个如下所示的调用:textbox
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
在例程开始时
推荐阅读
- java - How to increment "01" as "02" ,"03"...."10","11" in java?
- javascript - 如何在 Node.Js 和 Discord.Js 中设置 TypoError 以使机器人加入语音频道
- terraform - 如何修复在 terraform 计划期间为资源产生了意想不到的新价值?
- r - weighted.mean 在 R 中跨 2 个向量的内部聚合?
- junit - SecurityContextLogoutHandler 测试问题
- excel - 子集的 Excel 命名范围
- python - Python将列表写入csv
- highlight - 2021 年 8 月(1.60 版)Insider's Build 突出显示 .txt 文件中“双引号”和“撇号”之间的文本
- flutter - 未处理的异常:错误状态:DocumentSnapshotPlatform 中不存在字段(虽然它确实在 firestore 上退出)
- excel - Excel 求解函数