精華區beta Accounting 關於我們 聯絡資訊
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 -- 周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office 會計人的Excel小教室: https://www.facebook.com/acctexcel -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.20.97.42 ※ 文章網址: https://www.ptt.cc/bbs/Accounting/M.1482151474.A.F24.html