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