李鳳 劉靜 董博 紀春玲 陳凱男
(河北省地震局,河北石家莊 050021)
Execl VBA技術簡介
李鳳 劉靜 董博 紀春玲 陳凱男
(河北省地震局,河北石家莊 050021)
本文詳細介紹了Execl VBA的特點和應用,包括VBA與CAD、CorelDraw等其他圖形軟件的通用性,VBA與VB本身的區別與聯系等等,同時還介紹了程序代碼的調試與優化,最后介紹了對VBA代碼的保護以保護程序開發者的勞動成果,為統計工作者提供參考。
VBA 代碼 保護
報表是企業管理的基礎,企業管理人員每天需要處理不同類型,不同口徑,不同格式的基礎報表,從基礎數據中進行挖掘分析,進而做出決策。在數據處理量不大的條件下,通過人工判斷、篩選、加權、計算等步驟可以整合出滿足條件的新報表,但在數據處理量大或者邏輯判斷復雜的情況下,這種處理方法不僅單調枯燥、費時費力,而且容易出錯,而利用Execl自帶的功能強大的VBA技術,能實現自動判別、自動篩選、自動計算,最終能自動輸出所需格式報表,將報表制作人員從繁重的數據中解脫出來,將更多的精力投入到數據分析決策中來,極大地提高辦公效率。
VBA(Visual Basic for Applications)是Microsoft Office集成辦公軟件的內置編程語言,是新一代標準宏語言。VBA是基于VB(Visual Basic)發展起來的,與VB有很好的兼容性, “寄生于”Office應用程序,面向對象(OOP),能將繁瑣、機械的工作自動化,在WORD、EXECL、POWERPOINT、ACCESS等Office系列中能通用。此外,CAD、CorelDraw等圖形軟件也支持VBA語言。
(1)VB用于創建標準的應用程序,VBA是使已有的應用程序自動化;(2)VB具有自己的開發環境,VBA寄生于已有的應用程序;(3)VB開發出的應用程序可以是可執行文件(EXE文件),VBA開發的程序必須依賴于它的父應用程序(Office)。
(1)使重復的任務自動化;(2)自定義工具欄、菜單和界面;(3)簡化模版的使用;(4)自定義Office,使其成為開發平臺;(5)創建報表;(6)對數據進行復雜的操作和分析。
(1)VBA程序只起輔助作用,大部分功能可以用Office的,因此簡化了程序設計。比如,打印、文件處理、格式化和文本編輯等功能不必另行設計;(2)通過宏錄制,可以部分地實現程序設計的自動化,大大提高軟件開發效率;(3)便于發布。只要發布含有VBA代碼的文檔或模版即可。無須考慮運行環境,因為Office是普遍配備的應用軟件。無須安裝和卸載,不影響系統配置,屬于綠色軟件。(4)Office界面對于廣大計算機應用人員來說比較熟悉,符合一般操作人員的使用習慣,便于軟件推廣應用。(5)用VBA編程非常簡單,即使非計算機專業人員,可以很快編出自己的軟件,而且Office應用軟件及其VBA內置大量函數、語句、方法等,功能非常豐富。
用其他語言開發應用程序,大約一半左右的工作是編寫一些基本功能的模塊,包括文件的打開和保存,打印、復制等,而用Office作為開發平臺,則由于已經具備這些基本功能,可以直接使用,因此,開發工作量大大減少。
在開發和調試完應用程序后,還要對應用程序進行優化。VBA是非常靈活的編程語言,完成同樣一個任務可以有多種方法。初學時或編寫一次性使用的程序,只須完成特定功能即可,但如果解決方案是頻繁使用的,如完成周報表的應用程序,或每次打開文檔都運行的代碼,就需要優化代碼,使運行時需要較少的時間和內存。
OFFICE對象有上百個,對象的屬性、方法、事件更是數不勝數,對于初學者來說不可能對它們全部了解,因此不能很好地利用這些對象的屬性、方法和函數,而另外編寫VBA代碼段實現相同的功能。自編代碼段一般要比原有對象的屬性、方法和函數完成任務的效率低。
每個對象的屬性、方法的調用都需要通過OLE接口的一個或多個調用,這些OLE調用都是需要時間的,減少使用對象引用能加快VBA代碼的運行。
盡管在代碼中使用Variant變量很方便,但VBA在處理Variant變量值比處理顯式類型變量需要更多的時間,但使用顯式變量會犧牲掉靈活性,如此會遇到溢出問題,而使用Variant變量則能自動處理這種情況。
代碼保護是為了防止他人隨意讀取或修改源程序代碼,保護軟件開發人員的知識成果。要想不讓軟件使用者查看和修改程序代碼,可以采取如下方法:
進入VBA編輯環境,打開“工程資源管理器”窗口,用鼠標右擊工程(VBAProject),在彈出菜單中選“VBAProject屬性”項,在“VBAProject工程屬性”對話框的“保護”選項卡中,選中“查看時鎖定工程”復選框,然后輸入并確認“查看工程屬性的密碼”,最后單擊“確定”按鈕,保存當前工作簿并退出。再次打開工作簿時,要查看或者修改程序代碼,必須輸入正確的密碼。
[1]李政,梁海英,李昊等.VBA應用基礎與實例教程.國防工業出版社.
[2]王靖,王林,周金文.用EXCELVBA方法實現報表自動生成.電力科學與工程.