【发布时间】:2011-12-14 05:59:16
【问题描述】:
在 Excel 中,我有一列 ID。我想根据 ID 列中的值从表中选择值。到目前为止,我已经知道了,其中 ws.Cells(i,10) 指的是 K 列中每一行的值。
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=xxxx;Description=xxxxx;UID=xxx;APP=2007 Microsoft Office system;WSID=xxx" _
), Array("56;DATABASE=xxx;Trusted_Connection=Yes")), Destination:=Range( _
"$M$3")).QueryTable
For i = 1 To 691
sText = "SELECT Instrument.ID, Instrument.MATURITY FROM xxxx.dbo.Instrument Instrument WHERE Instrument.ID=" & ws.Cells(i, 10).Value & ""
.CommandText = Array(sText)
Next
End With
我在 sText 行上收到错误“424”,错误消息“需要对象”。
我也有预感,这不是最好的方法。必须有一个更简单的设置才能从列中运行带有 WHERE 条件的 SQL。
感谢您的帮助!
【问题讨论】:
-
我相信 Excel 可能有一个内置连接,或者至少是一个插件,可以让 Excel 直接与数据库对话。我还要小心连接字符串 - SQL 注入很讨厌。
-
您的数据库是 SQL Server 吗?如果是这样,OpenRowset 可能适合。它将允许您同时从 SQL 数据库和 Excel 中提取数据。