Excel VBA查询表属性

时间:2014-10-31 20:22:43

标签: excel vba

我有一个当前正在运行的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

任何非常感谢的帮助

1 个答案:

答案 0 :(得分:0)

由于Excel引入了ListObjects(在UI中称为Tables),因此您无法再依赖QueryTables.Count来获取所有外部数据连接。如果您没有任何QueryTable,那么外部数据连接将通过ListObject。

Sheet1.ListObjects(1).QueryTable.CommandText = Text

请注意,ListObject没有QueryTable s 属性,而是QueryTable属性,因为它始终只有一个。