有多少光發(fā)多少熱,VBA的能量
2017-11-09閱讀 4710

說起VBA,很多接觸過Excel的人會(huì)一臉茫然,但一說到宏就明白了。其實(shí),宏與VBA從本質(zhì)上是一回事,都是一組代碼,只不過宏是我們運(yùn)用Excel直接錄制的操作步驟集合,以解決反復(fù)重復(fù)的操作帶來的效率低下;而VBA是運(yùn)用編寫代碼的形式完成宏不可能完成的自動(dòng)處理任務(wù),它可以應(yīng)用到任何工作表或工作薄。

下面給VBA下個(gè)定義:VBAVisual Basic For Application)是一種通用的自動(dòng)化語言,是非常流行的應(yīng)用程序開發(fā)語言Visual Basic的子集。VBA作為一種標(biāo)準(zhǔn)宏語言,具有跨越多種應(yīng)用軟件并且具有控制應(yīng)用軟件對(duì)象的能力,在Office中,VBA適用于所有應(yīng)用程序,包括Word、ExcelPowerPoint、Access、Outlook以及Project。多種應(yīng)用程序共用一種語言,節(jié)省了程序人員的學(xué)習(xí)時(shí)間,提高了不同應(yīng)用軟件間的相互開發(fā)和調(diào)用能力。所以,VBA不僅僅是針對(duì)Excel,對(duì)整個(gè)Office都能起到提升效率的編程工具。

VBA最常見的應(yīng)用領(lǐng)域Excel來說,我們運(yùn)用它可以將重復(fù)的操作一鍵化,將復(fù)雜的計(jì)算簡單化,可以根據(jù)實(shí)際需求自定義函數(shù),快速訪問、導(dǎo)入和導(dǎo)出外部數(shù)據(jù),制作復(fù)雜、規(guī)范化的圖表、數(shù)據(jù)模型,自動(dòng)生成報(bào)告等。例如某大型寫字樓對(duì)租戶進(jìn)行滿意度調(diào)查,調(diào)查表用Excel形式且調(diào)查的項(xiàng)目較多,收回調(diào)查表多達(dá)幾百份,再對(duì)工作薄中的數(shù)據(jù)進(jìn)行,工作量巨大,需要兩個(gè)人兩天的時(shí)間,如果運(yùn)用VBA編寫的程序進(jìn)行匯總,一個(gè)人幾分鐘即可,大大提高了工作效率。再比如,某大型金融機(jī)構(gòu)的汽車信貸業(yè)務(wù),需要對(duì)不同廠商、不同型號(hào)、不同時(shí)期、不同的城市銷售汽車的貼息、貸款金額進(jìn)行分類統(tǒng)計(jì),并分別送達(dá)給各自的上游廠商。在收集不同品牌、不同城市的銷售商數(shù)據(jù)時(shí),由于品牌、型號(hào)的輸入不規(guī)范、不統(tǒng)一,無法進(jìn)行數(shù)據(jù)統(tǒng)計(jì),而參照正確的品牌名稱、型號(hào)對(duì)這些上萬條數(shù)據(jù)進(jìn)行整理就成了很大的問題,運(yùn)用VBA快速整合,就成了簡單、快速、低成本、高效率的解決方案。

以上是我們所講的VBA優(yōu)勢所在,然而實(shí)現(xiàn)這一切,都是緊緊圍繞著VBA程序代碼的寄生平臺(tái)Office應(yīng)用軟件,即針對(duì)Excel編寫的代碼,其程序的運(yùn)行、對(duì)話框和窗體的打開、執(zhí)行都需要先打開excel再進(jìn)行處理,離開它VBA程序就成了無水的根。這就是VBA的局限性,因?yàn)樗皇且粋€(gè)獨(dú)立的執(zhí)行語言平臺(tái)。所以,希望運(yùn)用VBA制作一個(gè)漂亮的啟動(dòng)界面(在不打開Excel的情況下),并擁有豐富的支持組件恐怕很難。

VBA的加密和權(quán)限設(shè)置是它的另一大缺陷,現(xiàn)在網(wǎng)上有很多OfficeVBA原代碼密碼的破解工具,從去除密碼到修改密碼都有。

最可怕的是,Excel本身就是一個(gè)占用資源很大的程序,在應(yīng)用代碼對(duì)它進(jìn)行操作時(shí),如果表格本身數(shù)據(jù)量和修飾、公式很大時(shí),速度自然而然很慢,影響數(shù)據(jù)處理的效率。

很多公司、個(gè)人希望將自己用VBA編寫的程序、模型、甚至系統(tǒng)進(jìn)行商業(yè)化,以取得一定的經(jīng)濟(jì)利益,而上述缺陷會(huì)給商業(yè)化的進(jìn)程帶來重重的困難。所以,現(xiàn)提供的兩點(diǎn)建議:一是將VBA程序封裝為DLL文件或可執(zhí)行的EXE文件,但代碼需要調(diào)整,且VBA窗體受程序模塊本身的限制在封裝過程中處理很麻煩。二是徹底放棄VBA,運(yùn)用其他高級(jí)語言(像VSTO、C#等)對(duì)Excel直接操作,其搭建的交互式界面會(huì)和加密試、權(quán)限設(shè)置會(huì)非常專業(yè)。

因此,應(yīng)正確認(rèn)識(shí)VBA的功能以及它對(duì)Office的依賴性,才能將我們?nèi)粘9ぷ鲙肀憷?/span>

頭像
高杉
18
文章總數(shù)
83160
總閱讀數(shù)