2014-10-31 148 views
0

我有一個目前正在工作的odbc查詢表,但我需要通過單元格D18中的值定義從數據庫選擇的字段。Excel VBA查詢表屬性

下面的代碼應該替換查詢表屬性中的命令文本,但它不起作用。 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

您是否將QueryTable範圍轉換爲ListObject又名Excel表? – 2014-10-31 20:38:35

+0

沒有。我用Data->從其他來源 - > MS查詢並返回數據作爲表。然後我刪除標題,以便將值顯示在單個單元格中。但它仍然是一張表格,我可以右擊並刷新 – jfly62 2014-10-31 20:44:47

+0

因此,您可能需要編輯「連接」對象的「CommandText」。 – 2014-10-31 20:47:00

回答

0

由於引入Excel ListObjects(在UI稱爲表)的任何幫助,您可以不再依賴QueryTables.Count去所有的外部數據連接。如果您沒有任何QueryTable,則外部數據連接將通過ListObject。

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

注意的ListObject不具有的QueryTable 小號屬性,但一個的QueryTable屬性,因爲總有唯一的一個。

+0

非常感謝迪克。這已經讓我堅持了幾個小時 – jfly62 2014-10-31 22:15:06