發表文章

目前顯示的是有「Excel VBA」標籤的文章

Excel 整合案例分享-以痠痛貼布使用情形為例(vba-data analysis-chart)

圖片
斷斷續續發了幾篇 [使用VBA抓資料]、[表格資料的處理] 以及 [圖表製作] 的心得後,這一天終於來到。 有人問了這個問題,「每次都發一點一點的,什麼時候可以看到我使用 Excel 的全貌呢?」 在小弟的認知當中, Excel 大約可以分為三個領域,在網路裡每個領域都有可找到高手神人: 資料處理與分析 (包括資料庫的觀念、內建工具及函數的使用、樞紐分析及大數據分析工具的使用) 數據視覺化呈現的圖表製作 自動化的 vba 程式設計 剛好,最近就有一個整合案例分享給大家,也是我作業的日常。 某一天,健保署統計了去年一整年使用痠痛貼布>192片的病患名單,要醫院自己看著辦。當然了,過去的已經改變不了,老闆會關心的點就是「今年度痠痛貼布的使用情形呢?」 於是乎…從電腦開機、去茶水間倒杯溫溫的茶走回座位開始,一直到最後結果出來,小弟我大約用了20分鐘的時間,這期間跑資料游標呈現漏斗狀不太能動電腦時,還抽空和女同事探討了一下人生問題,這樣子的速度快不快? 由於不便呈現真實、近期資料,所以我把資料日期拉得遠一些,一樣是半年,並且增加或刪除一些資料、去識別化。主要呈現這三個部份: 用 VBA 取得所需要的醫令(我自己有vba寫好的報表產生器模板,只要改一點點地方就可以抓到需要的資料) 把文字形態的日期用涵數date()格式化為正確的日期格式。再使用樞紐分析,統計出老闆關心的部份,像是1~6月合計使用>96片病患清單、單月使用>16片註記… 做一個圖來說明。 影片到此為止沒有錄進去後續的美編排版,其實raw data到手整理經過Excel Table化之後,使用樞紐分析可以解決八、九成以上的統計需求,而且可以非常的快速,節省下許多時間,強力推薦給每位Excel 使用者。

健保給付、許可證、藥理分類(ATC/AHFS) 一鍵通通下載!! 優化版

圖片
很快地,一年一年又一年,就這麼過去了 二年前(2016.5.29)    在   http://prinsa.pixnet.net/blog/post/327581883  首次 發表了一篇    藥品許可證及藥理治療分類批次下載程式  ,是以 Excel VBA 下載   [ 藥品許可證 ] 及 [ 藥理治療分類 ]  資料的文章 一年前 (2017.5.4)  在    http://prinsa.pixnet.net/blog/post/341796603  再把功能強化,成為 健保給付、許可證、藥理分類(ATC/AHFS)一鍵通通下載!   時間很巧合地又來到了五月,在這期間我做了些什麼? 2018.04.14 分享 健保藥價比對程式    2018.04.?? 健保署的健保用藥品項查詢網址由 www 改為 www1  2018.05.?? 再由 www1 改回 www (主機升級換機嗎? 還是掛了換備機頂著先?) 程式碼整個改寫,耗用資源更少,不會抓個幾百筆資料後就死機在那裡。優化了去年的版本,取消視覺化不甚實用的功能,換言之,在執行過程中直到結束為此,你完全看不到它在做什麼,換來的是執行速度的提升! 以前抓取5筆資料大約要二十多秒,現在同樣的時間它可以完成17筆資料,效率提升了三倍有餘,連我自己都嚇了一跳!在改寫的過程中預期執行速度變快肯定是會有的,怎知差距會大到這個地步! 下載這個版本,自己回去玩玩看就知真假。 藥品許可證及藥理治療分類批次下載   2018.05.04版 (已下架) 藥品許可證及藥理治療分類批次下載 2019.02.12版  (已下架) (此版又更快了, 每秒一筆) 這2支 (藥品許可證及藥理治療分類批次下載、健保藥價比對程式) 我自己都沒有在使用,在工作上已經 N 年沒碰到這一塊了,所以人客您如若發現了問題沒有 pass 給我,等到我自己發現也可能是 N 年以後的事了。 至於會繼續維護、強化它,純粹出自於興趣。 一個喜歡打電動的孩子,...

以Excel VBA建置之「四級管制藥品電子化登錄簿冊」32位元/64位元問題解密

圖片
這是一篇很硬的文章!慎入!慎入! 有位朋友說,寫個程式可以穩定執行後你以為就可以不用去管它了嗎? 錯!就跟生個孩子一樣,生出來後就要一直呵護它、照顧它,直到它老死下架或你比它先死,因為就算程式沒更動,可外在執行環境是一直在變的啊~ 我辦公用電腦一直用32位元的系統,最近才把電腦的系統換成了64位元的WIN10,OFFICE也順便換成了64位的2016,問題就來了,原來用的好好的東西,我引以為傲跑了三年都沒事的Excel VBA建置之「四級管制藥品電子化登錄簿冊」,卻跑出個[Microsoft][ODBC driver…]方面的錯誤訊息! 上網查發現是ADO(ActiveX Data Objects)的問題,貌似說是ADO是32位元下的元件,在64位元下無法運行(不知道到底是不是這個原因,就當它是吧)。於是開始不死心嘗試引用不同的ADO版本,從2.8試到了6.1,結果...都不行…… 俺當時的心情真的 @$#E%&)......真想問候微軟他媽,既然不能用,你為啥在64位的OFFICE引用裡還能看到ADO呢?這不是坑爹嗎! 一開始,龜一點的解決方法基本都是放棄64位的OFFICE………就像7月份發生的那次一樣,64位元WIN10 回去使用 32位元OFFICE 2007,彼此相安無事了3個月,以為一切都會那樣美好。誰知10月2X日微軟發佈了重要安全性更新,讓你不得不更新,自此不論是我家裡(64位元WIN10 + 32位元OFFICE 2013),或辦公室為了跑程式唯一那台(64位元WIN10 + 32位元OFFICE 2007),都一樣,Microsoft OLE DB Provider for ODBC Drivers 不run就是不run!! 秉著存在就有道理的精神,繼續在網上挖…… ConnectionStrings.com  讓我看到了希望,它說 ”The Microsoft OLE DB Provider for Jet” and “the Jet ODBC driver” 只能在 32-bit 的環境,而在64-bit就是不行, 解決方法基本是使用 Microsoft ACE OLEDB 12.0(Microsoft Access Database Engine) 64位元要用: P...