今天分享一下最近用 excel VBA 做的小功能,在整理題庫的時候發現,想要把原本有題目&解答的word檔拆成兩份,一份仍然維持原本的格式,有題目&解答:
另一份只要有題目就好:
這樣在練習解題的時候可以看第二份檔案,要查答案再看第一份檔案,那麼問題就來了:這份題庫一共有 15 章,每章有 60~80 題不等,總題數大約超過 1000 題!要怎樣在短時間內輕鬆的做出第二份檔案呢?
我想到幾個方法:
- 手動用滑鼠反白選取「Answer:」那行文字,然後用滑鼠點選文字顏色的設定,設成白色 –> 真的要這樣幹的話,大概直接點到中風比較快?!
- 手動用滑鼠移到「Answer:」那行文字之前,然後用「shift+end」選取整行文字,把顏色設成白色,之後再把滑鼠移到下一行「Answer:」文字之前,按F4重複上述設定顏色為白色的動作 –> 嗯,有用到 F4 來啟動 word 自動錄下的 macro,稍微有點進步,但是很不幸的,這份題庫的總題數大約超過 1000 題!所以還是放棄!
- 改進第二個作法,設法讓「再把滑鼠移到下一行「Answer:」文字之前,按F4重複上述設定顏色為白色的動作」可以自動化的對整份文件的內容執行,最好是可以按一個鍵就把整份文件的格式調整好,那麼就愉快了!
經過一番嘗試,完整的程式碼如下 (範例 word 檔可至這裡下載):
最後的成果,左邊是有答案的版本,右邊只剩下題目,超過1000題只花了我10分鐘左右:
要實作這樣的功能並不困難,可歸納為以下幾個步驟:
- 先觀察一下要做的事情,如果是不斷重複的機械化動作,就要想到:應該可以用 excel 內建的 function / VBA 來完成
- 整理出一個可重複執行的流程 (如上述第二點),以程式的觀點來看就是每次跑迴圈時要執行的動作
- 以錄製巨集 (macro) 的方式,錄下手動操作一次該流程所產生的程式碼
- (視情況) 清掉錄到的程式碼中沒有用的東西 (可能是不小心手殘多按到無關的功能等等)
- 在這段程式碼之外加上一個迴圈
- test、test、test
- 加上註解,讓下次有需要使用的時候可以快速回憶
follow以上的流程,就可以大大簡化繁瑣的重複性工作,節省可觀的時間,心情也會比較好!聽說日本的上班族很會用 excel 的 function /VBA 來簡化例行性的工作,與大家共勉之 :p
補充:設定讓 Developer (開發人員) Ribbon 永遠顯示在工具列 (以 Word 2010 為例)
在 File –> Options 中,勾選 Developer:
在 Developer 這個 ribbon 內就可以編修、錄製 macro 囉:
回頭爬了一下 blog 上面的文章,上一次寫跟 VBA 有關的文章居然已經是快要一年半之前了 (第一次認真寫 VBA - -> Report Generator),真是時光飛逝阿!
2 則留言:
所以說你一點也不認真寫 VBA (誤
學好 VBA 在工作很有幫助
它可以幫忙處理很多小事 (比方講這篇 XD
我以前上班時常用 Excel + VBA 來處理資料,最後再用 SQL Server 的 SSIS 功能匯入資料庫,十分簡便 :D
我哪有不認真寫 VBA,起碼現在對怎樣寫迴圈很熟 XD 我覺得這幾個步驟蠻好用的啦,照著走一遍就可以解決大部分的問題
張貼留言