2019年6月30日 星期日

使用Excel VBA 取得台灣證券交易所個股股價資訊

先前是透過Excel的從網站取得外部資料再搭配yahoo股市的投資組合設定來取得個股的當日收盤資訊,

但但是~~~幾天前yahoo股市的投資組合改版了......

所以就取不到資料了~~~~

當然就透過google大神看看有沒有其他的資訊取得方式

發現證交所有提供所謂的查詢方式可取得

最簡單的就是https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_1101.tw

將網址貼上後就會呈見如下資訊
因為台灣有分上市或上櫃,所以這邊參數部分要注意的是tse表上市;otc表上櫃

當然底線後面加的就是股票代號囉

回傳的資料是採用JSON格式的

當然可以直接硬解,或是到 https://github.com/VBA-tools/VBA-JSON 下載 JSON conversion and parsing for VBA

匯入excel後,您就可以json的方式來取得您要的資料了

程式範例如下:

Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
sUrl = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_" + sCode + ".tw"
'Using .Open to send GET request
XMLHTTP.Open "GET", sUrl, False
XMLHTTP.send
Set JSON = ParseJson(XMLHTTP.responseText)
Sheet5.Cells(i, 3) = JSON.Item("msgArray")(1).Item("z")

這樣就是取到此股的當日收盤價