Excel 2013记录/刷新实时库存数据

时间:2014-09-30 19:43:26

标签: excel vba excel-vba stockquotes

我正在Excel 2013中尝试记录来自Yahoo Finance的实时库存数据。在我的单元格A1中,我有GoPro股票代码GPRO。

Cell 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个时间刷新一次库存数据,并让程序自动启动/停止。?

1 个答案:

答案 0 :(得分:0)

两件事:

(1)将i声明为公共(全局)变量,因此它将在迭代之间保持它的值。

(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