這邊還是強調歐,請尊重網路資源,切勿濫用!!!!這點超重要的。
這是一篇教學文,主要是透過Microsoft.XMLHTTP的GET方式取得資料,彙整後取出各上市公司的"營業利益率", "稅前淨利率", "稅後淨利率", "流動比率", "速動比率", "負債比率%", "存貨週轉率(次)"等資料。
一、步驟:
1.選擇抓網路資料的方法
本文以Microsoft.XMLHTTP get方法執行。
2.資料回傳後,彙整方式
本文後續會說明如何以split的方式拆解資料
3.資料呈現方式與後續再使用。
建議已可滿足閱讀性尤佳。
二、教學文:
2.1.選擇抓網路資料的方法
2.1.1 程式碼:程式碼主要為以下部分,URL變數為網址。
Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "get", Url, False
web.send
web.responsetext
說明:筆者以台泥財務比率表為例(如下圖1.),設定url為該網址執行上列模組後,web.responsetext此一部分即為執行後回傳資料。
1.台泥財務比率資料
圖1資料網址:http://XXXXXX.com.tw/z/zc/zcr/zcr_1101.djhtm
圖2.vba 即時運算視窗
圖2 說明:透過 ? web.responsetext 指令所印出的資料
2.2.資料回傳後,彙整方式
2.2.1 思考點:應該如何彙整?透過表單(sheet)或透過陣列方式儲存後再取出所需要的資料都是方法之一,不過差別在於效率不同。
以下圖3與圖4分別為筆者透過表單(sheet)與陣列方式所儲存的web.responsetext回傳資料。
圖3.表單儲存
圖4.陣列儲存
2.2.2 圖3與圖4該如何作?
筆者是透過split與vblf將回傳的資料作分割,一次丟到陣列中,後續再運用陣列剖析的技巧(如instr與split作更進一步的資料分離),並沒有用到"htmlfile"的物件故如getelementsbyname等方法後面不會出現歐,所以看到這裡,想學"htmlfile"就先說聲抱歉了。
vba語法:webdata = Split(web.responsetext, vbLf)
運行後,此時webdata 陣列的資料會儲存如下圖所顯示的資料。
再結合for迴圈就可以將陣列中的資料逐一寫入excel 儲存格中,若要更進一步拆解出需要的字元可以配合split作拆解
沒有留言:
張貼留言