2015-04-01 66 views
0

我想從互聯網上下載價格。當我將symb定義爲常數值(例如K15)時,該概念起作用。但現在,我想從不同的鏈接下載數據,其中symb部分根據電子表格中單元格G13到G22的值而變化。 (換句話說,我想通過從G13到G22的每一行 - 每個包含symb的不同值 - 並從相應鏈接下載數據)。每個循環包含不同值的變量

我試圖與一個簡單的循環,定義變量symb在循環中的每一個:

For i = 1 To 10 

    Symb = Worksheets("Futures").Range("G12").Offset(i, 0).Value 

Set qt = querysheet.QueryTables.Add(_ 
Connection:="URL;" & "http://download.finance.yahoo.com/d/quotes.csv?s=" & Symb & ".cbt&f=sl1d1t1c1ohgv&e=.csv", _ 
    Destination:=querysheet.Cells(5 + i, 1)) 

Next i 

顯然,它不喜歡這個工作。我認爲不可能在循環中定義一個變量,是嗎?有人能給我一個提示,我怎麼能做到這一點?

+1

這都不明顯,它沒有按」像這樣工作。 「這不起作用」是什麼意思?你有錯誤嗎?如果是這樣,哪一行會引發錯誤,錯誤消息是什麼意思?如果沒有錯誤,請描述觀察結果與預期結果的差異。 – 2015-04-01 21:27:35

+0

您可能想簡單地做:'Destination:= querySheet.Cells(5,1))',因爲添加每個qt都會自動插入列。 – 2015-04-01 21:29:24

+0

感謝您的回覆! VBA不顯示錯誤消息,但我得到的結果只是「.cbt,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N /一個」。之前,當我剛剛擁有一個恆定的symb值時,我收到了類似「CK15.cbt,376.25,」3/31/2015「,」2:09 pm「, - 18.25,394.00,398.50,375.75,302825」 – StefanW 2015-04-01 21:36:50

回答

0

你的連接字符串有一些東西。當我在URL字符串中刪除.cbt時,它可以工作。或者,您可能忘記了包含一些字母,因此請在瀏覽器中進行調試,並確保Connection字符串正確,並且它應該可以正常工作。

您可能還需要修改的目的,像這樣,並刷新表:

Set qt = querySheet.QueryTables.Add(_ 
Connection:="URL;" & "http://download.finance.yahoo.com/d/quotes.csv?s=" & Symb & "&f=sl1d1t1c1ohgv&e=.csv", _ 
    Destination:=querySheet.Cells(5, 1)) 
    qt.Refresh 
+0

謝謝!查詢表是否可能沒有從右到左完成,而是從左到右?現在,似乎每個新的單元格都會將循環中的值推到右側。這意味着,來自最後一個循環的值在A5中,而來自第一個循環(在6個循環中)的值在F5中找到。 – StefanW 2015-04-07 21:38:51

+0

添加QT將插入到現有數據中,這就是您看到您所看到的內容的原因。不用回去再試一遍代碼,試試吧:'Destination:= querySheet.Cells(5,i)'。這應該把第一列第一列,第二列第二列等 – 2015-04-07 21:52:03

+0

非常好,謝謝! – StefanW 2015-04-07 22:15:37

0

,你可以使用一個數組這樣

symb(1 to 10) as String 
    for i=1 to 10 
     symb(i)=cells(i,1) 
    next i