【发布时间】:2017-10-12 16:08:18
【问题描述】:
我一直在使用以下 vba 代码Using Excel VBA to run SQL query(注意此链接中的赞成答案是我使用的方法)这允许我在 excel 单元格中输入一个值,并将来自 sql 的结果转储到另一列中。
但是我现在遇到的问题是我想对一个 excel 列中的多个单元格(不仅仅是一个单元格)运行它,并希望为我提供来自 sql 的另一列(如 vlookup)的状态。
我的数据包含大约 20000 行,我需要从 sql 中超过 100 万条记录的状态列中检查状态。
无法使用链接的方法一一做,不知道是否可以在我的StrQuery中使用'" & Range("A3") & "'"而不是使用表?
澄清这是我正在使用的:
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
ConnectionString = "Provider=SQLOLEDB.1;Password=PASSWORD;Persist Security Info=True;User ID=USERNAME;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"
cnn.Open ConnectionString
cnn.CommandTimeout = 900
StrQuery = "SELECT StatusColumn FROM Status WHERE Contact = " & Range("A2") & "'"
'Performs the actual query
rst.Open StrQuery, cnn
Sheets(1).Range("B2").CopyFromRecordset rst
End Sub
我想知道是否可以将我的 sql 查询中的范围从 A2 更改为 A:A 或 A2:A20000 并转储到 B:B 或 B2:B20000 中,但这不起作用。
编辑:我再次运行此程序取得了半成功,但范围增加了 1,但空间不足,循环可以帮助吗?
【问题讨论】:
标签: sql sql-server excel vba