在Excel

时间:2017-08-15 15:50:06

标签: sql excel vba excel-vba

有没有办法通过VBA替换Excel中数据连接中的SQL命令文本?

例如,我有一个名为“Accounts”的数据连接,它在命令文本中有一个简单的查询,表明

Select a.* 
from Recon a 
where a.recon in 
('12345','67890')

我在sheet1(单元格A2到单元格A5)中构建了SQL语句,允许用户输入不同的“recon”数字。而不是他们必须将其复制并粘贴到数据连接中的命令文本中。我希望能够有一个宏,将SQL从单元格A2到单元格A5复制并粘贴到数据连接中的命令文本中,然后刷新连接到Table1的数据连接。

2 个答案:

答案 0 :(得分:1)

根据连接类型,您可以使用

更改命令文本
wb.Connections(1).OLEDBConnection.CommandText = ...

wb.Connections(1).ODBCConnection.CommandText = ...

(wb是您正在处理的工作簿)。

但是:请注意SQL注入!

答案 1 :(得分:0)

我最初使用此代码开始,可以在我的一些评论中看到

<% @results['results'].each do |t| %>
<%= t['title'] %>

然后我通过反复试验得出以下内容。我用另一个宏创建了我的SQL字符串文本,然后为我的命令文本调用了该字符串。

Sub RefreshData() ActiveWorkbook.Connections
("Recon") .OLEDBConnection.CommandText = Worksheets("Sheet1").Range("Recon_SQL")
 ActiveWorkbook.Connections("Recon").Refresh End Sub