在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