Обновите ячейку excel котировками акций NSE (Национальной фондовой биржи)

Вопрос связан с VBA для Excel. Я запускаю MS Excel 2011 на Mac.

Используя http://finance.google.com/finance/info?client=ig&q=NSE:INFY, я могу получить информацию о цене акций. Это старый API из google finance, который все еще активен.

Был поиск некоторой помощи для обновления ячейки excel по цене, которая возвращается из набора данных этого API.

Он возвращает что-то вроде

▶ curl http://finance.google.com/finance/info\?client\=ig\&q\=NSE:INFY // [ { "id": "675530" ,"t" : "INFY" ,"e" : "NSE" ,"l" : "1,184.10" ,"l_fix" : "1184.10" ,"l_cur" : "Rs.1,184.10" ,"s": "0" ,"ltt":"3:40PM GMT+5:30" ,"lt" : "Apr 11, 3:40PM GMT+5:30" ,"lt_dts" : "2016-04-11T15:40:45Z" ,"c" : "+18.35" ,"c_fix" : "18.35" ,"cp" : "1.57" ,"cp_fix" : "1.57" ,"ccol" : "chg" ,"pcls_fix" : "1165.75" } ] 

Я могу получить это извлечение с помощью сценария оболочки, но я хочу, чтобы он был в excel

CLI:

 curl --silent http://finance.google.com/finance/info\?client\=ig\&q\=NSE:INFY\ > /tmp/ChangeIsInevitable && cat /tmp/ChangeIsInevitable | grep l_fix | sed 's/[",]//g' | awk '{print $3}' 1184.10 

Не нашел прямого пути, используя VBA для EXCEL MAC. Так написал небольшой скрипт оболочки, чтобы получить CSV. Затем импортируйте его в excel

Я просто хотел получить самую последнюю цену за несколько цен акций по запросу. Чтобы использовать это, у вас должен быть файл под названием «Stocklist» у вас дома ~ с запасами, которые вы хотите Поиск по умолчанию для NSE, вы можете изменить значение переменной для индекса на BSE

 #!/bin/bash index=NSE filename=~/latestPrice.txt #Cleanup temp files cp /dev/null $filename echo "Stock,Price" >> $filename for i in `cat ~/stocklist` do curl --silent "http://finance.google.com/finance/info?client=ig&q=${index}:${i}" > /tmp/tmpfile stockPrice=`cat /tmp/tmpfile | grep l_fix | sed 's/[",]//g' | awk '{print $3}'` echo "$i : $stockPrice" echo "$i,$stockPrice" >> $filename done 

РЕДАКТИРОВАТЬ:

Поскольку я начал работать с python, вот версия python, которая предоставляет выход CSV.

 import requests import json stocks = [ 'NSE:AXISBANK', 'NSE:BAJAJ-AUTO' ] r = requests.get("http://finance.google.com/finance/info?client=ig&q=%s" % (','.join(stocks))) result = r.content result = result.replace("// ","") data = json.loads(result) for stock in data: print "%s,%s" % (stock['t'], stock['pcls_fix']) 

Используя библиотеку VBA-JSON Git (которую вы сохраняете непосредственно в автономном модуле и ссылаетесь на ссылку Microsft Runtime), Excel VBA может анализировать объекты json:

 Dim jsonStr As String, strPath As String, URL As String Dim p As Object, element As Variant Dim i As Integer, j As Integer Dim wb As Workbook Dim jsondata As New Collection strPath = ActiveWorkbook.Path ' DOWNLOAD JSON Dim objhttp As Object URL = "http://finance.google.com/finance/info?client=ig&q=MSFT" Set objhttp = CreateObject("Microsoft.XMLHTTP") With objhttp .Open "GET", URL, False .send jsonStr = Replace(.responseText, "/", "") End With Set p = ParseJson(jsonStr) ' OPEN EXTERNAL WORKBOOK Set wb = Workbooks.Add wb.Activate ' ITERATE DATA ROWS i = 1 For Each element In p If i = 1 Then ' HEADERS j = 1 For Each k in element.keys wb.Sheets(1).Cells(i, j) = k j = j + 1 Next k Else ' DATA ROWS j = 1 For Each k in element.keys wb.Sheets(1).Cells(i, j) = element(k) j = j + 1 Next k End if i = i + 1 Next element Set objhttp = Nothing Set element = Nothing Set p = Nothing Set wb = Nothing 
Давайте будем гением компьютера.