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