首页 文章

在Excel中替换数据连接中的SQL命令文本

提问于
浏览
2

有没有办法通过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

    根据连接类型,您可以使用更改命令文本

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

    要么

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

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

    However: Be aware about SQL Injection!

  • 1

    我最初从这个代码开始,可以在我的一些评论中看到

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

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

    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
    

相关问题