2015-10-26 4 views
0

Я хочу получить стоимость акций через API Google Finance в Excel.Позвоните в Google Finance API в Excel

Ресурс: https://finance.google.com/finance/info

Метод: GET

Параметры:

  • клиент =
  • мкг
  • Q = <exchange code>:<stock code>

пример:

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

этот запрос получит цену акций Taiwan Semiconductor.

Есть ли решение, независимо от того, выполняете ли какие-либо настройки рабочего листа или пишете код VBA, чтобы достичь моей цели?

ответ

1

Да. Для получения ответа используются методы XMLHTTPRequest, https://msdn.microsoft.com/en-us/library/ms759148%28v=vs.85%29.aspx. И разбор JSON с VBA для разбора ответа, поскольку это JSON. Самый простой способ разбора JSON с VBA описан здесь 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 
+1

Благодаря Axel. С MSXML2.XMLHTTP я успешно возвращаю JSON на свой рабочий лист. ScriptControl не удалось выполнить (ошибка: 429). Я думаю, проблема в том, что моя Windows 64-бит. В любом случае, спасибо большое. –

+0

@ Veck Hsiao: Да 'ScriptControl' - это только 32-разрядный компонент ActiveX. Попробуйте использовать одну из доступных библиотек для разбора JSON wit VBA. –