0

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

单元格 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 时间刷新一次股票数据并让程序自动启动/停止。?

4

1 回答 1

1

两件事情:

  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
于 2014-09-30T19:59:18.013 回答