2016-04-11 24 views
0

質問はExcel for VBAに関連しています。私はMacでMS Excel 2011を実行しています。更新は、NSE(National Stock Exchange)の株価情報でExcelを更新します。

http://finance.google.com/finance/info?client=ig&q=NSE:INFYを使用すると、株価の詳細を取得することができます。これはGoogle Financeの古いAPIです。

このAPIのデータセットから返される価格でExcelセルを更新するためのヘルプを探していました。

CLIそれは私が、これはシェルスクリプトを使用して抽出得ることができます

▶ 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" 
} 
] 

のようなものを返しますが、私はエクセル

でそれをしたい:

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 

答えて

0

はまっすぐ進むべき道を見つけることができませんでしたEXCEL MACにはVBAを使用します。 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での作業を開始しておりますので

、ここでのCSV出力を提供してPythonのバージョンがあります。

(あなたは一人でモジュールを立って、Microsftランタイムリファレンスを参照するために直接保存)VBA-JSON Gitのライブラリを使用して
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']) 
0

、エクセル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 
関連する問題