【发布时间】:2017-09-28 12:40:28
【问题描述】:
我有一个有效的 Excel 电子表格,它使用 VBA 根据输入到单个单元格中的内容来更改连接查询中的参数。它不能使用 Excel 参数来获取值,因为变量在连接中而不是在查询的 where 部分中。所以我知道这原则上是可行的,至少对于一个数据单元格来说是这样。
我现在需要创建一个新的电子表格,我需要将一系列数据放入查询中。
查询看起来像这样:
选择 * 从表_A 身份证在哪里 ('一种', '乙', 'C')
VBA 从电子表格的列中提取值 A、B 和 C,目前看起来像这样:
Dim ID_Range As Range
Sheets("Data").Select
Set ID_Range = Sheets("Data").Range("A1:A10")
With ActiveWorkbook.Connections("Query from Database_A").ODBCConnection
.BackgroundQuery = True
.CommandText = Array( _
"Select * FROM Table_A A WHERE A.ID in " "(" + ID_Range + ")")
.CommandType = xlCmdSql
.Connection = Array(Array( _
ODBC;Description= ****
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
希望我在删除公司特定信息时没有删除任何重要代码。
运行时出现错误:下标超出范围。
我需要做什么才能让它工作?
【问题讨论】:
-
"Select * FROM Table_A A WHERE ..." Table_A 后面的剩余 A?
-
看起来很有希望,谢谢!我现在就测试一下。
-
您的
.Connection使用括号未闭合的数组 -
您必须使用 ODBC 连接对象吗?或者是否有另一种解决方案也可以快速从您的后端套装中提取数据?