2014-09-30 159 views
0

我在Excel 2013中嘗試記錄來自Yahoo Finance的實時股票數據。在我的單元格A1中,我有GoPro股票代碼GPRO。Excel 2013記錄/刷新實時股票數據

小區B1有代碼

=WEBSERVICE("http://finance.yahoo.com/d/quotes.csv?s="&A1&"&f=l1") 

爲了獲取實時股票價格,在單元格C1

=NUMBERVALUE(WEBSERVICE("http://finance.yahoo.com/d/quotes.csv?s="&A1&"&f=l1")) 

要改變從互聯網上得到成若干字符串值。我有一個宏在VBA是

Sub Capture() 
    If I = 0 Then I = 1 
    Sheets("recorddata").Cells(1, I) = Sheets("getdata").Range("C1") 
    I = I + 1 
    Application.OnTime Now + TimeValue("00:00:15"), "Capture" 
End Sub 

要嘗試記錄每15秒的實時股票價格。出於某種原因,程序將運行一次並將股票價格複製到下一個電子表格中,但不會刷新股票數據或每15秒重新運行應用程序。有人可以幫助我找到一種解決方案,每x時間刷新一次庫存數據並讓程序自動啓動/停止。

回答

0

兩件事情:

(1)聲明我作爲一個公共(全局)變量,因此將舉行它的迭代之間的值。 (2)在複製數據之前執行Application.Calculate,以確保=WebService()函數在獲取值之前調用Yahoo。

Public i As Integer 

Sub Capture() 
    If i = 0 Then i = 1 
    Application.Calculate 
    Sheets("recorddata").Cells(1, i) = Sheets("getdata").Range("C1") 
    i = i + 1 
    Application.OnTime Now + TimeValue("00:00:15"), "Capture" 
End Sub 
+0

謝謝你回答我的問題。當我運行程序時,它只運行一次而不重複。 – Chris 2014-10-01 02:15:21

+0

一切看起來都不錯。我已經測試了相同的代碼,但是替換表格(「recorddata」).cell(1,i)與其他東西一致,並且間隔1秒並且成功。爲了進行調試,您可能想要嘗試製作第二個名爲Capture2的子程序。讓Capture()在您的.OnTime行中調用Capture2並讓Capture2調用它的OnTime()行上的Capture。你可以讓capture 2執行諸如msgbox(「Capture2」)之類的東西來確認它被啓動。 – JNevill 2014-10-01 12:07:40