在Excel中replace数据连接中的SQL命令文本
有没有办法通过VBAreplaceExcel中数据连接中的SQL命令文本?
例如,我有一个名为“Accounts”的数据连接,并且在命令文本中有一个简单的查询
Select a.* from Recon a where a.recon in ('12345','67890')
我有一个Sheet1(单元格A2到单元格A5)内置的SQL语句,允许用户input不同的“重新”数字。 而不是他们必须将其复制并粘贴到数据连接的命令文本中。 我希望能够有一个macros,将单元格A2中的SQL复制并粘贴到数据连接的命令文本中,然后刷新连接到Table1的数据连接。
根据连接types,您可以使用更改命令文本
wb.Connections(1).OLEDBConnection.CommandText = ...
要么
wb.Connections(1).ODBCConnection.CommandText = ...
(wb是你正在工作的工作簿)。
但是:请注意SQL注入!
我最初从这个代码开始,这在我的一些评论中可以看到
Sub RefreshData() ActiveWorkbook.Connections ("Recon") .OLEDBConnection.CommandText = Worksheets("Sheet1").Range("Recon_SQL") ActiveWorkbook.Connections("Recon").Refresh End Sub
然后我通过反复试验,得出以下结论。 我用另一个macros创build了我的SQLstring文本,然后为我的命令文本调用该string。
With ActiveWorkbook.Connections("Recon").OLEDBConnection .BackgroundQuery = True .CommandText = strsql 'SQL string created by recon_sql_string_creation macro End With ActiveWorkbook.Connections("Recon").Refresh End Sub