2016-04-11 23 views
0

Soru, bir VBA for excel ile ilgilidir. MS Excel 2011'i bir Mac'te çalıştırıyorum.Güncelleme excel hücre ile NSE (National Stock Exchange) hisse senedi fiyatları

http://finance.google.com/finance/info?client=ig&q=NSE:INFY numaralı ürünü kullanarak hisse senedi fiyat bilgilerini alabiliyorum. Bu, google finansın hala aktif olan eski bir API'sidir.

Bu API'nin veri kümesinden döndürülen fiyat ile bir excel hücresini güncellemek için bazı yardımlar arıyordum.

O

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

gibi bir şey bu kabuk komut dosyası kullanarak çıkarılan alabilirsiniz döndürür, ancak ben excel olarak istiyorum

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 

cevap

0

yalındır yolunu bulamadı EXCEL MAC için VBA kullanarak. Bir CSV almak için küçük bir kabuk komut dosyası yazdım. Daha sonra ithalatı

'a gönderin. Sadece birkaç hisse senedi fiyatının en son fiyatını talep üzerine almak istedim. Eğer ~ senin evde Varsayılan arama NSE içindir istediğiniz stoklarla "stok listesi" adlı bir dosya olmalı bu kullanmak için , sen

BSE için indeksi için değişken değerini değiştirebilir
#!/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 

DÜZENLEME:

i piton ile çalışmaya başladığımdan beri

, burada bir CSV çıkışı sağlayan bir piton versiyonudur.

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

Excel VBA json nesneleri ayrıştırabileceğiniz (yalnız modülünü durmak ve Microsft Süre başvuru başvuru doğrudan kaydedin) VBA-JSON Git kütüphane kullanma:

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 
İlgili konular