如何从雅虎拉“最后交易date”数据 Excel中的财务API?
使用Visual Basic,我试图从雅虎拉“最后交易date”数据。 通过在Excel中引用股票的股票代码来为CSV提供财务API。
雅虎 金融API的 最后交易date作为“&f = d1 ”附加到URL上, 股票交易代码被replace为Excel中的StockQuote()(例如GOOG,GE)。
在股票代码中input股票代码并反过来用StockQuote()引用该股票时,我收到#VALUE! 错误。
点击查看#VALUE! 来自Excel的错误截图
我意识到使用StockQuote()函数的As Double数据types可能不适合检索date数据。 用当前代码块中的Integer , Long和Date数据typesreplaceDouble已经呈现了#VALUE! 错误也是如此。
我正在一个启用macros的工作表中,并将Visual Basic代码放在一个模块中。
有人会解释#VALUE的来源! 错误和我可能会修改下面的代码来检索给定的股票代码的最后交易date,当利用雅虎! 财务API?
Option Explicit Function StockQuote(ByVal ticker As String) As Double Dim url As String Dim lastDate As Double Dim http As Object url = "http://download.finance.yahoo.com/d/quotes.csv?s=" & ticker & "&f=d1" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", url, False http.Send StockQuote = http.responseText Set http = Nothing End Function
从Sub而不是从工作表中调用你的函数会给你一个更好的想法。
在这种情况下,错误是“types不匹配”就行了:
StockQuote = http.responseText
这是因为(如你所怀疑的)你已经把函数的返回types标记为Double
,而http.responseText
是String
types的。 请注意, 返回值实际上包含引号,因此您可能需要删除这些引号 。
Function StockQuote(ByVal ticker As String) As Double Dim url As String Dim lastDate As Double Dim http As Object, rv url = "http://download.finance.yahoo.com/d/quotes.csv?s=" & ticker & "&f=d1" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", url, False http.Send rv = http.responseText StockQuote = CDate(Trim(Replace(rv, """", ""))) Set http = Nothing End Function