在Excel中调用Google Finance API

时间:2015-10-26 09:11:58

标签: excel vba google-finance-api

我想在Excel中通过Google财经API获取股票价格。

资源:https://finance.google.com/finance/info

方法:GET

参数:

  • client = ig
  • q = <exchange code>:<stock code>

示例:

https://finance.google.com/finance/info?client=ig&q=TPE:2330

此要求将获得台湾半导体的股价。

是否有解决方案,无论是设置工作表还是编写一些VBA代码,都能实现我的目标?

1 个答案:

答案 0 :(得分:1)

是。方法是XMLHTTPRequest,https://msdn.microsoft.com/en-us/library/ms759148%28v=vs.85%29.aspx用于获取响应。并使用VBA解析JSON以解析响应,因为它是JSON。这里描述了使用VBA解析JSON的最简单方法Parsing JSON in Excel VBA,但搜索关键字Excel VBA parse JSON提供了更舒适的库。

您的用例的简单示例:

Sub testGetJSON()

 sExchangeCode = "TPE"
 sStockCode = "2330"
 sURL = "https://finance.google.com/finance/info?client=ig&q=" & sExchangeCode & ":" & sStockCode

 Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
 oXMLHTTP.Open "GET", sURL, False
 oXMLHTTP.send

 sJSONResp = oXMLHTTP.responseText

 sJSONResp = Mid(sJSONResp, 4, Len(sJSONResp))

 Set oScript = CreateObject("ScriptControl")
 oScript.Language = "jscript"
 oScript.AddCode "function getProperty(jsonObj, propertyName) { return jsonObj[propertyName]; } "

 Set oJSObj = oScript.eval("(" & sJSONResp & ")")

 Set oProp0 = oScript.Run("getProperty", oJSObj, "0")

 sLCur = oProp0.l_cur
 sLT = oProp0.lt

 MsgBox sLT & " : " & sLCur

End Sub