我有一个当前正在运行的odbc查询表,但我需要通过单元格D18中的值定义从数据库中选择的字段。
以下代码应替换查询表属性中的命令文本,但它不起作用。 debug说"下标超出范围"。如果我在即时窗口中调试并运行?文本然后在SQL中运行此结果文本行,它返回正确的值,因此sql语句是正确的。我在vba语法中出错了什么
Sub Accrual()
Text = "SELECT "
Text = Text & "BALANCE.CDTLED_" & Range("D11").Value - 1 & " "
Text = Text & "FROM x3sov.SOVEX.BALANCE BALANCE "
Text = Text & "WHERE (BALANCE.ACC_0='2109') AND (BALANCE.FCY_0='S01')"
Sheets("Control").QueryTables(1).CommandText = Text
End Sub
任何非常感谢的帮助
答案 0 :(得分:0)
由于Excel引入了ListObjects(在UI中称为Tables),因此您无法再依赖QueryTables.Count
来获取所有外部数据连接。如果您没有任何QueryTable,那么外部数据连接将通过ListObject。
Sheet1.ListObjects(1).QueryTable.CommandText = Text
请注意,ListObject没有QueryTable s 属性,而是QueryTable属性,因为它始终只有一个。