[心得] VBA如何修改網址下載財務報表

作者: moodyblue   2016-12-19 20:42:12
VBA如何修改網址下載財務報表
網誌圖文版:
http://www.b88104069.com/archives/4144
可以這麼理解全球資訊網,各國各地有數不清的伺服器,每台伺服器有許多
網頁,千千萬萬網頁用同一套標準格式編輯,每頁標上門牌號碼(網址),
瀏覽器搜尋到網址,超連結傳送請求給某伺服器,伺服器接受請求,如果網
路通道順暢,立即回傳網頁資料,個人電腦的瀏覽器經過解析,呈現圖文網
頁在螢幕上。這其中,網址如同浩翰圖書館裡的編號和頁碼,如果想要撈取
網際網路裡的數據,必須先解析資料庫網址。以下,就公開資訊觀測站的公
告財務報表為例,分享Excel的VBA於其中妙用:
一、公開資訊觀測站IFRS單一公司案例文件預覽及下載,3323的105年第1季
IFRS 合併財務報表預覽,「
http://mops.twse.com.tw/server-java/t164sb01?step=1&CO_ID=3323&SYE
AR=2016&SSEASON=1&REPORT_ID=C」。
二、「錄製巨集」:「您執行的所有命令將儲存至巨集,您可以再次播放巨
集。」簡單理解,就是Excel把操作以程式形式記錄起來。關於巨集,如果有
興趣,可以參考《會計人的Excel小教室》第一章第四節。
三、取得網頁資料,先前有介紹過作法。
四、下載完後,「停止錄製」,注意到這裡是「105年第一季」。接著在此「
開發人員」功能頁籤中,點擊「Visual Basic」。
五、進入VBA編輯器,雙擊「Module1」,這麼一大段天書,便是剛才所錄製
的Excel操作,下面參數部份也許看不懂,但是開頭的地方該能看得懂:
With ActiveSheet.QueryTables.Add(Connection:=
"URL;http://mops.twse.com.tw/server-java/t164sb01step=1&CO_ID=3323
&SYEAR=2016&SSEASON=1&REPORT_ID=C", Destination:=Range("$A$1"))
.Name="t164sb01step=1&CO_ID=3323&SYEAR=2016&SSEASON=1&REPORT_ID=C"
其中「 _」是VBA程式換行碼,考慮文章呈現,部份我作了修改,自己實際試
作的讀者,以自己Excel檔案的VBA程式為準。
六、關鍵字既然是「ID=3323&SYEAR=2016&SSEASON=1」,照樣造句,依需要
修改,例如:「ID=3323&SYEAR=2016&SSEASON=2」。
七、再次執行巨集,成功下載第二季的財務報告。
很多道理一貫相通。透過網址取得網頁資料,在這篇文章是修改VBA程式,以
先前文章介紹過的Excel指令來說,是修改視窗欄位中的網址,能夠達到相同
效果。更進一步說,平常瀏覽器閱讀網頁,也可以直接在網址列把「1」改成
「2」。重點是,這些以期間資料為主的網站,其網址有一定規則可循,像這
篇文章的「公開資訊觀測站IFRS單一公司案例文件」,網址一長串,至少有
三個地方很明顯:股票代碼、年度、季度,掌握這些規律,是批次取得大數
據的關鍵,其中涉及到的技術較為複雜,留待日後一一介紹。
延伸閱讀:
VBA如何檢查應付帳款負數
http://www.b88104069.com/archives/4126
VBA如何計算健保應負擔金額
http://www.b88104069.com/archives/4136
VBA如何自定義健保級距的計算函數
http://www.b88104069.com/archives/4140

Links booklink

Contact Us: admin [ a t ] ucptt.com