什么是VBA VBA宏功能介紹
發(fā)布時(shí)間:2012-12-05 09:45:21 作者:佚名
我要評論

Visual Basic for Applications(VBA)是一種Visual Basic的一種宏語言,主要能用來擴(kuò)展Windows的應(yīng)用程式功能,特別是Microsoft Office軟件。也可說是一種應(yīng)用程式視覺化的Basic Script
Visual Basic for Applications(VBA)是一種Visual Basic的一種宏語言,主要能用來擴(kuò)展Windows的應(yīng)用程式功能,特別是Microsoft Office軟件。也可說是一種應(yīng)用程式視覺化的Basic Script。1994年發(fā)行的Excel 5.0版本中,即具備了VBA的宏功能。
什么是Excel應(yīng)用程序?利用Excel和VBA為平臺,開發(fā)出來的電子數(shù)據(jù)表即稱Excel應(yīng)用程序。
什么是宏?宏是一系列的命令與函數(shù),存儲于 Visual Basic 的模塊中,并在在需要執(zhí)行該項(xiàng)任務(wù)時(shí)可隨時(shí)運(yùn)行。如果經(jīng)常在重復(fù)某項(xiàng)任務(wù),那么可以用宏自動(dòng)執(zhí)行該任務(wù)。
上面是VBA的三個(gè)概念,那為什么要用VBA?為什么要以Excel為平臺來開發(fā)程序?
這里說幾個(gè)簡單的理由!
1、當(dāng)使用Excel為平臺時(shí),你的程序就可以利用Excel現(xiàn)有的功能,可以站在一個(gè)小巨人的肩膀上,這就可大大減少開發(fā)的周期。
2、幾乎所有的電腦中都有Excel,也有大量的人正在使用Excel,但并不是每個(gè)人都會(huì)使用VBA,當(dāng)你了解VBA后,以前的很多問題就可能在這就迎韌而解。
3、Excel開發(fā)程序分發(fā)很容易,只要電腦中有Excel,基本不需要在其它的文件,簡簡單單的復(fù)制與粘貼,就完成了文件的分發(fā)。
4、VBA的語言是相對容易學(xué)的語言,很容易上手,如果你熟悉VB,那你發(fā)現(xiàn)它們在語言方面是相通的,而如果你對Excel比較了解,那你也就很容易理解Excel的各種對象了。
最后,任何東西都不是萬能的Excel與VBA也是一樣。
如,Excel是一個(gè)電子表格程序,如果你把它強(qiáng)加成數(shù)據(jù)庫軟件是不公平的,在處理較少的數(shù)據(jù),比如幾千行的,用Excel是比較理想的,而大量的數(shù)據(jù)時(shí),你就應(yīng)該考慮用數(shù)據(jù)庫了,比如Microsoft Office中的Access等,或者將兩個(gè)相結(jié)合。
充分了解Excel的基本知識與VBA的編程技巧,你就會(huì)從中獲得樂趣,讓我們一起來吧,走進(jìn)VBA的世界中。
VBA的用途
由于微軟Office軟件的普及,人們常見的辦公軟件Office軟件中的Word、Excel、Access、Powerpoint都可以利用VBA使這些軟件的應(yīng)用更高效率,例如:通過一段VBA代碼,可以實(shí)現(xiàn)畫面的切換;可以實(shí)現(xiàn)復(fù)雜邏輯的統(tǒng)計(jì)(比如從多個(gè)表中,自動(dòng)生成按合同號來跟蹤生產(chǎn)量、入庫量、銷售量、庫存量的統(tǒng)計(jì)清單)等。
掌握了VBA,可以發(fā)揮以下作用:
1.規(guī)范用戶的操作,控制用戶的操作行為;
2.操作界面人性化,方便用戶的操作;
3.多個(gè)步驟的手工操作通過執(zhí)行VBA代碼可以迅速的實(shí)現(xiàn);
4.實(shí)現(xiàn)一些VB無法實(shí)現(xiàn)的功能。
VBA和VB的區(qū)別包括如下幾個(gè)方面:
1. VB是設(shè)計(jì)用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序,而VBA是使已有的應(yīng)用程序(EXCEL等)自動(dòng)化
2. VB具有自己的開發(fā)環(huán)境,而VBA必須寄生于已有的應(yīng)用程序.
3. 要運(yùn)行VB開發(fā)的應(yīng)用程序,用戶不必安裝VB,因?yàn)閂B開發(fā)出的應(yīng)用程序是可執(zhí)行文件(*.EXE),而VBA開發(fā)的程序必須依賴于它的父應(yīng)用程序,例如EXCEL.
4.VBA是VB的一個(gè)子集。
盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似.事實(shí)上,如果你已經(jīng)了解了VB,會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???相應(yīng)的,學(xué)完VBA會(huì)給學(xué)習(xí)VB打下堅(jiān)實(shí)的基礎(chǔ).而且,當(dāng)學(xué)會(huì)在EXCEL中用VBA創(chuàng)建解決方案后,即已具備在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA創(chuàng)建解決方案的大部分知識.
* VBA一個(gè)關(guān)鍵特征是你所學(xué)的知識在微軟的一些產(chǎn)品中可以相互轉(zhuǎn)化.
* VBA可以稱作EXCEL的“遙控器”.
VBA究竟是什么?更確切地講,它是一種自動(dòng)化語言,它可以使常用的程序自動(dòng)化,可以創(chuàng)建自定義的解決方案.
此外,如果你愿意,還可以將EXCEL用做開發(fā)平臺實(shí)現(xiàn)應(yīng)用程序.
Office取得巨大成功的一個(gè)重要原因就是VBA,使用VBA可以完成很多事情,基于Excel、Word的VBA小程序不計(jì)其數(shù)。
VBA程序員很多是業(yè)余程序員,正因?yàn)闃I(yè)余,解決的卻是工作中需要解決的問題;所以,VBA程序大多都是只是在部門內(nèi)部或個(gè)人使用的小工具。
集成了VBA的其他應(yīng)用程序也很多,但真正能為程序增色的不多。
大多數(shù)人看到了VBA可以自動(dòng)化一個(gè)程序,可以擴(kuò)展已有程序,但沒有看到在Office中,VBA代碼可以是錄制的,而不是寫出來的,帶來的好處是,學(xué)習(xí)曲線變得非常緩。如果沒有宏錄制功能,要熟悉某個(gè)Office組件的對象模型,絕非一日之功。
以ArcGIS為例,ArcGIS擴(kuò)展必須使用ArcObject,不管是使用VBA也罷,VB也罷,還是C++也罷。但同時(shí),ArcObject的學(xué)習(xí)不是一天兩天可以搞定,對于業(yè)余程序員,要使用VBA來擴(kuò)展ArcGIS,幾乎沒有可能;專業(yè)程序員又不屑使用VBA;而對于公司,如果要基于ArcObject來擴(kuò)展ArcGIS,選擇VBA意味著源碼的保護(hù)很困難。所以,ArcGIS的VBA就如同雞肋。
不過,學(xué)習(xí)AO的時(shí)候,使用VBA比使用其他語言要容易一些,寫幾行代碼,然后直接運(yùn)行測試結(jié)果,這種交互式的學(xué)習(xí)應(yīng)該是最好的學(xué)習(xí)方法。
ArcGIS以及AO與Office相比,還有一個(gè)很大的差別,就是ArcGIS缺乏中等粒度的對象,例如Word和Excel的Range對象。對于Office開發(fā),可以在對底層小粒度對象一無所知的狀況下做很多事情,這就是抽象的力量。常人可以處理的復(fù)雜度是有限的,面對數(shù)十個(gè)對象和幾百個(gè)對象,后者需要付出的努力不是10倍,而是數(shù)十倍或更多,因?yàn)樵趯W(xué)習(xí)過程中,必須可以把這些對象在大腦中很好的組織,以控制其復(fù)雜度。
Visual Basic for Applications(簡稱VBA)是新一代標(biāo)準(zhǔn)宏語言,是基于Visual Basic for Windows 發(fā)展而來的。它與傳統(tǒng)的宏語言不同,傳統(tǒng)的宏語言不具有高級語言的特征,沒有面向?qū)ο蟮某绦蛟O(shè)計(jì)概念和方法。而VBA 提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提供了相當(dāng)完整的程序設(shè)計(jì)語言。VBA 易于學(xué)習(xí)掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉(zhuǎn)換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉(zhuǎn)換為VBA 程序代碼,使工作自動(dòng)化。因此,對于在工作中需要經(jīng)常使用Office 套裝軟件的用戶,學(xué)用VBA 有助于使工作自動(dòng)化,提高工作效率。另外,由于VBA 可以直接應(yīng)用Office 套裝軟件的各項(xiàng)強(qiáng)大功能,所以對于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)更加方便快捷。
VBA 基礎(chǔ)
Visual Basic 的應(yīng)用程序版(VBA)是Microsoft 公司長期追求的目標(biāo),使可編程應(yīng)用軟件得到完美的實(shí)現(xiàn),它作為一種通用的宏語言可被所有的Microsoft 可編程應(yīng)用軟件所共享。在沒有VBA 以前,一些應(yīng)用軟件如Excel、Word、Access、Project 等都采用自己的宏語言供用戶開發(fā)使用,但每種宏語言都是獨(dú)立的,需要用戶專門去學(xué)習(xí),它們之間互不兼容,使得應(yīng)用軟件之間不能在程序上互聯(lián)。擁有一種可跨越多個(gè)應(yīng)用軟件,使各應(yīng)用軟件產(chǎn)品具有高效、靈活且一致性的開發(fā)工具是至關(guān)重要的。VBA 作為一種新一代的標(biāo)準(zhǔn)宏語言,具有上述跨越多種應(yīng)用軟件并且具有控制應(yīng)用軟件對象的能力,使得程序設(shè)計(jì)人員僅需學(xué)習(xí)一種統(tǒng)一的標(biāo)準(zhǔn)宏語言,就可以轉(zhuǎn)換到特定的應(yīng)用軟件上去,程序設(shè)計(jì)人員在編程和調(diào)試代碼時(shí)所看到的是相同的用戶界面,而且VBA 與原應(yīng)用軟件的宏語言相兼容,以保障用戶在代碼和工作上的投資。有了VBA 以后,多種應(yīng)用程序共用一種宏語言,節(jié)省了程序人員的學(xué)習(xí)時(shí)間,提高了不同應(yīng)用軟件間的相互開發(fā)和調(diào)用能力。
在Office 2000 中,宏語言VBA 適用于所有應(yīng)用程序,包括Word 、 Excel、PowerPoint、Access、Outlook 以及Project。在Office 97 的各應(yīng)用程序中,新增了Visual Basic 編輯器。這樣,用戶無論是在Excel 中,還是在Word 中以至是在Access 中建立和管理VBA 都具有統(tǒng)一的方法和標(biāo)準(zhǔn)。
在介紹如何利用VBA 提高工作效率之前,首先介紹一些與VBA 有關(guān)的基礎(chǔ)知識。
VB 與VBA
VBA 是基于Visual Basic 發(fā)展而來的,它們具有相似的語言結(jié)構(gòu)。Visual Basic 是Microsoft 的主要圖形界面開發(fā)工具,VBA 5.0 (亦即VBA 97)則是Visual Basic 5.0 的子集。Visual Basic 是由Basic 發(fā)展而來的第四代語言。Visual Basic 作為一套獨(dú)立的 Windows 系統(tǒng)開發(fā)工具,可用于開發(fā)Windows 環(huán)境下的各類應(yīng)用程序,是一種可視化的、面向?qū)ο蟮摹⒉捎檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級程序設(shè)計(jì)語言。它具有高效率、簡單易學(xué)及功能強(qiáng)大的特點(diǎn)。VB 的程序語言簡單、便捷,利用其事件驅(qū)動(dòng)的編程機(jī)制,新穎易用的可視化設(shè)計(jì)工具,并使用Windows 應(yīng)用程序接口(API)函數(shù),采用動(dòng)態(tài)鏈接庫(DLL)、動(dòng)態(tài)數(shù)據(jù)交換(DDE)、對象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫訪問(ODBC)等技術(shù),可以高效、快速地編制出 Windows 環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)。
Visual Basic 程序很大一部分以可視(Visual)形式實(shí)現(xiàn),這意味著在設(shè)計(jì)階段就可以看到程序運(yùn)行的屏幕畫面,用戶可以在設(shè)計(jì)時(shí)能夠方便地改動(dòng)畫面圖像、大小、顏色等,直到滿意為止。VB 的用戶可以是缺乏Windows 及C 語言開發(fā)經(jīng)驗(yàn)的專業(yè)軟件人員,也可以是具有一定Windows 開發(fā)經(jīng)驗(yàn)的專業(yè)人員,VB 的可視化編程方法使得原來繁瑣枯燥、令人生畏的Windows 應(yīng)用程序設(shè)計(jì)變得輕松自如、妙趣橫生。以往的Windows 應(yīng)用程序開發(fā)工具在設(shè)計(jì)圖形用戶界面時(shí),都是采用編程的方法,并伴隨大量的計(jì)算任務(wù),一個(gè)大型應(yīng)用程序約有90%的程序代碼用來處理用戶界面,而且在程序設(shè)計(jì)過程中不能看到界面顯示的效果,只有在程序執(zhí)行時(shí)才能觀察到,如果界面效果不佳,還需要回到程序中去修改。Visual Basic 提供了新穎的可視化設(shè)計(jì)工具,巧妙地將Windows 界面設(shè)計(jì)的復(fù)雜性封裝起來,程序開發(fā)人員不必再為界面設(shè)計(jì)而編寫大量程序代碼,僅需采用現(xiàn)有工具按設(shè)計(jì)者要求的布局,在屏幕上畫出所需界面,并為各圖形對象設(shè)置屬性即可,VB 自動(dòng)產(chǎn)生界面設(shè)計(jì)代碼,這樣便將事先編制好的控件可視地連接到一起,構(gòu)成一個(gè)隨時(shí)可調(diào)整的界面。
VBA 不但繼承了VB 的開發(fā)機(jī)制,而且VBA 還具有與VB 相似的語言結(jié)構(gòu),它們的集成開發(fā)環(huán)境IDE(Intergrated Development Environment)也幾乎相同。但是,經(jīng)過優(yōu)化,VBA 專門用于Office 的各應(yīng)用程序。VB 可運(yùn)行直接來自Windows 95 或NT 桌面上的應(yīng)用程序,而VBA 的項(xiàng)目(Project)僅由使用VBA 的Excel、Word、 PowerPoint 等稱為宿主(Host)的Office 應(yīng)用程序(Application)來調(diào)用。
WordBasic 和 Visual Basic
在 Word 中,為完成具體的任務(wù),所用的是WordBasic 命令。 WordBasic 是從VBA 擴(kuò)展而來的一種專用于處理Word 自動(dòng)功能的語言,下面介紹它們在概念上的區(qū)別和它們的宏的相互轉(zhuǎn)換。WordBasic 和 Visual Basic 在概念上的區(qū)別
VBA 和WordBasic 之間主要的區(qū)別是 WordBasic 語言包含由大約 900 個(gè)命令組成的一張平面列表,而 Visual Basic 則包含了由對象組成的一個(gè)分層結(jié)構(gòu),每個(gè)對象都可提供一組特定方法和屬性(與 WordBasic 中的語句和函數(shù)相似)。大多數(shù) WordBasic 命令在任何時(shí)候都可運(yùn)行,而 Visual Basic 只在特定的時(shí)候提供有效對象的方法和屬性。
注意: 本書提到的Visual Basic 如果不加特別說明,都是指Visual Basic For Applications。
對象是 Visual Basic 這一宏偉大廈的基石,在 Visual Basic 中進(jìn)行的幾乎任何操作都與修改對象有關(guān)。Word 的任何元素(如文檔、段落、域、書簽等),都可以用 Visual Basic 中的對象來代表。與平面列表中的命令不同,部分對象只能通過其他對象才能加以訪問。例如,可以通過不同的對象(如 Style、Selection 和 Find 對象)來訪問 Font 對象。
應(yīng)用加粗格式的編程任務(wù)就表明了兩種編程語言之間的區(qū)別。下面的 WordBasic 指令對所選內(nèi)容應(yīng)用加粗格式。
下面的示例是 Visual Basic 語句,也是對所選內(nèi)容應(yīng)用加粗格式。
Selection.Font.Bold = True
Visual Basic 不包含 Bold 語句和函數(shù),卻有一個(gè)名為 Bold 的屬性(屬性通常指一個(gè)對象的特性,例如大小、顏色,或者是否是加粗)。Bold 是 Font 對象的一個(gè)屬性。同樣地,F(xiàn)ont 是返回一個(gè) Font 對象的 Selection 對象的一個(gè)屬性。按照下面的對象結(jié)構(gòu),可以生成指令,以將加粗格式應(yīng)用于所選內(nèi)容。
Bold 屬性是一個(gè) Boolean 類型、可讀寫的屬性。這意味著可以將 Bold 屬性設(shè)置為 True 或 False(真或假),也可返回當(dāng)前值。下面 WordBasic 指令的返回值表明是否將加粗格式應(yīng)用于所選內(nèi)容。
x = Bold()
下面的示例是 Visual Basic 語句,返回所選內(nèi)容的加粗格式的狀態(tài)。
x = Selection.Font.Bold
要在 Visual Basic 中執(zhí)行一個(gè)任務(wù),就需要確定合適的對象。例如,如果用戶想應(yīng)用【字體】對話框中的字符格式,可使用 Font 對象。然后需要確定如何理順從 Application 對象到 Font 對象的 Word 對象結(jié)構(gòu),以找到包含需要修改的 Font 對象的對象。在確定了該對象的路徑之后(例如,Selection.Font),可使用 Visual Basic 編輯器中的【對象瀏覽器】、【幫助】或【自動(dòng)列表成員】之類的功能來確定可將什么屬性和方法應(yīng)用于該對象。
將 WordBasic 宏轉(zhuǎn)換為 Visual Basic
宏可使任務(wù)自動(dòng)化,如果在 Word 中重復(fù)進(jìn)行某項(xiàng)工作,可用宏使其自動(dòng)執(zhí)行。宏是將一系列的 Word 命令和指令組合在一起,形成一個(gè)命令,以實(shí)現(xiàn)任務(wù)執(zhí)行的自動(dòng)化。用戶可創(chuàng)建并執(zhí)行一個(gè)宏,以替代人工進(jìn)行一系列費(fèi)時(shí)而重復(fù)的 Word 操作。事實(shí)上,它是一個(gè)自定義命令,用來完成所需任務(wù)。
宏的一些典型應(yīng)用如:加速日常編輯和格式設(shè)置、組合多個(gè)命令、使對話框中的選項(xiàng)更易于訪問、使一系列復(fù)雜的任務(wù)自動(dòng)執(zhí)行等。
Word 提供了兩種創(chuàng)建宏的方法:宏錄制器和 Visual Basic 編輯器。宏錄制器可幫助用戶開始創(chuàng)建宏。Word 在 VBA 編程語言中把宏錄制為一系列的 Word 命令??稍?Visual Basic 編輯器中打開已錄制的宏,修改其中的指令。也可用 Visual Basic 編輯器創(chuàng)建包括 Visual Basic 指令的非常靈活和強(qiáng)有力的宏,這些指令無法采用錄制的方式。
當(dāng)?shù)谝淮芜M(jìn)行下列任何操作時(shí),Word 2000 將自動(dòng)轉(zhuǎn)換 Word 6.x 或 Word 95 模板中的宏。
什么是Excel應(yīng)用程序?利用Excel和VBA為平臺,開發(fā)出來的電子數(shù)據(jù)表即稱Excel應(yīng)用程序。
什么是宏?宏是一系列的命令與函數(shù),存儲于 Visual Basic 的模塊中,并在在需要執(zhí)行該項(xiàng)任務(wù)時(shí)可隨時(shí)運(yùn)行。如果經(jīng)常在重復(fù)某項(xiàng)任務(wù),那么可以用宏自動(dòng)執(zhí)行該任務(wù)。
上面是VBA的三個(gè)概念,那為什么要用VBA?為什么要以Excel為平臺來開發(fā)程序?
這里說幾個(gè)簡單的理由!
1、當(dāng)使用Excel為平臺時(shí),你的程序就可以利用Excel現(xiàn)有的功能,可以站在一個(gè)小巨人的肩膀上,這就可大大減少開發(fā)的周期。
2、幾乎所有的電腦中都有Excel,也有大量的人正在使用Excel,但并不是每個(gè)人都會(huì)使用VBA,當(dāng)你了解VBA后,以前的很多問題就可能在這就迎韌而解。
3、Excel開發(fā)程序分發(fā)很容易,只要電腦中有Excel,基本不需要在其它的文件,簡簡單單的復(fù)制與粘貼,就完成了文件的分發(fā)。
4、VBA的語言是相對容易學(xué)的語言,很容易上手,如果你熟悉VB,那你發(fā)現(xiàn)它們在語言方面是相通的,而如果你對Excel比較了解,那你也就很容易理解Excel的各種對象了。
最后,任何東西都不是萬能的Excel與VBA也是一樣。
如,Excel是一個(gè)電子表格程序,如果你把它強(qiáng)加成數(shù)據(jù)庫軟件是不公平的,在處理較少的數(shù)據(jù),比如幾千行的,用Excel是比較理想的,而大量的數(shù)據(jù)時(shí),你就應(yīng)該考慮用數(shù)據(jù)庫了,比如Microsoft Office中的Access等,或者將兩個(gè)相結(jié)合。
充分了解Excel的基本知識與VBA的編程技巧,你就會(huì)從中獲得樂趣,讓我們一起來吧,走進(jìn)VBA的世界中。
VBA的用途
由于微軟Office軟件的普及,人們常見的辦公軟件Office軟件中的Word、Excel、Access、Powerpoint都可以利用VBA使這些軟件的應(yīng)用更高效率,例如:通過一段VBA代碼,可以實(shí)現(xiàn)畫面的切換;可以實(shí)現(xiàn)復(fù)雜邏輯的統(tǒng)計(jì)(比如從多個(gè)表中,自動(dòng)生成按合同號來跟蹤生產(chǎn)量、入庫量、銷售量、庫存量的統(tǒng)計(jì)清單)等。
掌握了VBA,可以發(fā)揮以下作用:
1.規(guī)范用戶的操作,控制用戶的操作行為;
2.操作界面人性化,方便用戶的操作;
3.多個(gè)步驟的手工操作通過執(zhí)行VBA代碼可以迅速的實(shí)現(xiàn);
4.實(shí)現(xiàn)一些VB無法實(shí)現(xiàn)的功能。
VBA和VB的區(qū)別包括如下幾個(gè)方面:
1. VB是設(shè)計(jì)用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序,而VBA是使已有的應(yīng)用程序(EXCEL等)自動(dòng)化
2. VB具有自己的開發(fā)環(huán)境,而VBA必須寄生于已有的應(yīng)用程序.
3. 要運(yùn)行VB開發(fā)的應(yīng)用程序,用戶不必安裝VB,因?yàn)閂B開發(fā)出的應(yīng)用程序是可執(zhí)行文件(*.EXE),而VBA開發(fā)的程序必須依賴于它的父應(yīng)用程序,例如EXCEL.
4.VBA是VB的一個(gè)子集。
盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似.事實(shí)上,如果你已經(jīng)了解了VB,會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???相應(yīng)的,學(xué)完VBA會(huì)給學(xué)習(xí)VB打下堅(jiān)實(shí)的基礎(chǔ).而且,當(dāng)學(xué)會(huì)在EXCEL中用VBA創(chuàng)建解決方案后,即已具備在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA創(chuàng)建解決方案的大部分知識.
* VBA一個(gè)關(guān)鍵特征是你所學(xué)的知識在微軟的一些產(chǎn)品中可以相互轉(zhuǎn)化.
* VBA可以稱作EXCEL的“遙控器”.
VBA究竟是什么?更確切地講,它是一種自動(dòng)化語言,它可以使常用的程序自動(dòng)化,可以創(chuàng)建自定義的解決方案.
此外,如果你愿意,還可以將EXCEL用做開發(fā)平臺實(shí)現(xiàn)應(yīng)用程序.
Office取得巨大成功的一個(gè)重要原因就是VBA,使用VBA可以完成很多事情,基于Excel、Word的VBA小程序不計(jì)其數(shù)。
VBA程序員很多是業(yè)余程序員,正因?yàn)闃I(yè)余,解決的卻是工作中需要解決的問題;所以,VBA程序大多都是只是在部門內(nèi)部或個(gè)人使用的小工具。
集成了VBA的其他應(yīng)用程序也很多,但真正能為程序增色的不多。
大多數(shù)人看到了VBA可以自動(dòng)化一個(gè)程序,可以擴(kuò)展已有程序,但沒有看到在Office中,VBA代碼可以是錄制的,而不是寫出來的,帶來的好處是,學(xué)習(xí)曲線變得非常緩。如果沒有宏錄制功能,要熟悉某個(gè)Office組件的對象模型,絕非一日之功。
以ArcGIS為例,ArcGIS擴(kuò)展必須使用ArcObject,不管是使用VBA也罷,VB也罷,還是C++也罷。但同時(shí),ArcObject的學(xué)習(xí)不是一天兩天可以搞定,對于業(yè)余程序員,要使用VBA來擴(kuò)展ArcGIS,幾乎沒有可能;專業(yè)程序員又不屑使用VBA;而對于公司,如果要基于ArcObject來擴(kuò)展ArcGIS,選擇VBA意味著源碼的保護(hù)很困難。所以,ArcGIS的VBA就如同雞肋。
不過,學(xué)習(xí)AO的時(shí)候,使用VBA比使用其他語言要容易一些,寫幾行代碼,然后直接運(yùn)行測試結(jié)果,這種交互式的學(xué)習(xí)應(yīng)該是最好的學(xué)習(xí)方法。
ArcGIS以及AO與Office相比,還有一個(gè)很大的差別,就是ArcGIS缺乏中等粒度的對象,例如Word和Excel的Range對象。對于Office開發(fā),可以在對底層小粒度對象一無所知的狀況下做很多事情,這就是抽象的力量。常人可以處理的復(fù)雜度是有限的,面對數(shù)十個(gè)對象和幾百個(gè)對象,后者需要付出的努力不是10倍,而是數(shù)十倍或更多,因?yàn)樵趯W(xué)習(xí)過程中,必須可以把這些對象在大腦中很好的組織,以控制其復(fù)雜度。
Visual Basic for Applications(簡稱VBA)是新一代標(biāo)準(zhǔn)宏語言,是基于Visual Basic for Windows 發(fā)展而來的。它與傳統(tǒng)的宏語言不同,傳統(tǒng)的宏語言不具有高級語言的特征,沒有面向?qū)ο蟮某绦蛟O(shè)計(jì)概念和方法。而VBA 提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提供了相當(dāng)完整的程序設(shè)計(jì)語言。VBA 易于學(xué)習(xí)掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉(zhuǎn)換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉(zhuǎn)換為VBA 程序代碼,使工作自動(dòng)化。因此,對于在工作中需要經(jīng)常使用Office 套裝軟件的用戶,學(xué)用VBA 有助于使工作自動(dòng)化,提高工作效率。另外,由于VBA 可以直接應(yīng)用Office 套裝軟件的各項(xiàng)強(qiáng)大功能,所以對于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)更加方便快捷。
VBA 基礎(chǔ)
Visual Basic 的應(yīng)用程序版(VBA)是Microsoft 公司長期追求的目標(biāo),使可編程應(yīng)用軟件得到完美的實(shí)現(xiàn),它作為一種通用的宏語言可被所有的Microsoft 可編程應(yīng)用軟件所共享。在沒有VBA 以前,一些應(yīng)用軟件如Excel、Word、Access、Project 等都采用自己的宏語言供用戶開發(fā)使用,但每種宏語言都是獨(dú)立的,需要用戶專門去學(xué)習(xí),它們之間互不兼容,使得應(yīng)用軟件之間不能在程序上互聯(lián)。擁有一種可跨越多個(gè)應(yīng)用軟件,使各應(yīng)用軟件產(chǎn)品具有高效、靈活且一致性的開發(fā)工具是至關(guān)重要的。VBA 作為一種新一代的標(biāo)準(zhǔn)宏語言,具有上述跨越多種應(yīng)用軟件并且具有控制應(yīng)用軟件對象的能力,使得程序設(shè)計(jì)人員僅需學(xué)習(xí)一種統(tǒng)一的標(biāo)準(zhǔn)宏語言,就可以轉(zhuǎn)換到特定的應(yīng)用軟件上去,程序設(shè)計(jì)人員在編程和調(diào)試代碼時(shí)所看到的是相同的用戶界面,而且VBA 與原應(yīng)用軟件的宏語言相兼容,以保障用戶在代碼和工作上的投資。有了VBA 以后,多種應(yīng)用程序共用一種宏語言,節(jié)省了程序人員的學(xué)習(xí)時(shí)間,提高了不同應(yīng)用軟件間的相互開發(fā)和調(diào)用能力。
在Office 2000 中,宏語言VBA 適用于所有應(yīng)用程序,包括Word 、 Excel、PowerPoint、Access、Outlook 以及Project。在Office 97 的各應(yīng)用程序中,新增了Visual Basic 編輯器。這樣,用戶無論是在Excel 中,還是在Word 中以至是在Access 中建立和管理VBA 都具有統(tǒng)一的方法和標(biāo)準(zhǔn)。
在介紹如何利用VBA 提高工作效率之前,首先介紹一些與VBA 有關(guān)的基礎(chǔ)知識。
VB 與VBA
VBA 是基于Visual Basic 發(fā)展而來的,它們具有相似的語言結(jié)構(gòu)。Visual Basic 是Microsoft 的主要圖形界面開發(fā)工具,VBA 5.0 (亦即VBA 97)則是Visual Basic 5.0 的子集。Visual Basic 是由Basic 發(fā)展而來的第四代語言。Visual Basic 作為一套獨(dú)立的 Windows 系統(tǒng)開發(fā)工具,可用于開發(fā)Windows 環(huán)境下的各類應(yīng)用程序,是一種可視化的、面向?qū)ο蟮摹⒉捎檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級程序設(shè)計(jì)語言。它具有高效率、簡單易學(xué)及功能強(qiáng)大的特點(diǎn)。VB 的程序語言簡單、便捷,利用其事件驅(qū)動(dòng)的編程機(jī)制,新穎易用的可視化設(shè)計(jì)工具,并使用Windows 應(yīng)用程序接口(API)函數(shù),采用動(dòng)態(tài)鏈接庫(DLL)、動(dòng)態(tài)數(shù)據(jù)交換(DDE)、對象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫訪問(ODBC)等技術(shù),可以高效、快速地編制出 Windows 環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)。
Visual Basic 程序很大一部分以可視(Visual)形式實(shí)現(xiàn),這意味著在設(shè)計(jì)階段就可以看到程序運(yùn)行的屏幕畫面,用戶可以在設(shè)計(jì)時(shí)能夠方便地改動(dòng)畫面圖像、大小、顏色等,直到滿意為止。VB 的用戶可以是缺乏Windows 及C 語言開發(fā)經(jīng)驗(yàn)的專業(yè)軟件人員,也可以是具有一定Windows 開發(fā)經(jīng)驗(yàn)的專業(yè)人員,VB 的可視化編程方法使得原來繁瑣枯燥、令人生畏的Windows 應(yīng)用程序設(shè)計(jì)變得輕松自如、妙趣橫生。以往的Windows 應(yīng)用程序開發(fā)工具在設(shè)計(jì)圖形用戶界面時(shí),都是采用編程的方法,并伴隨大量的計(jì)算任務(wù),一個(gè)大型應(yīng)用程序約有90%的程序代碼用來處理用戶界面,而且在程序設(shè)計(jì)過程中不能看到界面顯示的效果,只有在程序執(zhí)行時(shí)才能觀察到,如果界面效果不佳,還需要回到程序中去修改。Visual Basic 提供了新穎的可視化設(shè)計(jì)工具,巧妙地將Windows 界面設(shè)計(jì)的復(fù)雜性封裝起來,程序開發(fā)人員不必再為界面設(shè)計(jì)而編寫大量程序代碼,僅需采用現(xiàn)有工具按設(shè)計(jì)者要求的布局,在屏幕上畫出所需界面,并為各圖形對象設(shè)置屬性即可,VB 自動(dòng)產(chǎn)生界面設(shè)計(jì)代碼,這樣便將事先編制好的控件可視地連接到一起,構(gòu)成一個(gè)隨時(shí)可調(diào)整的界面。
VBA 不但繼承了VB 的開發(fā)機(jī)制,而且VBA 還具有與VB 相似的語言結(jié)構(gòu),它們的集成開發(fā)環(huán)境IDE(Intergrated Development Environment)也幾乎相同。但是,經(jīng)過優(yōu)化,VBA 專門用于Office 的各應(yīng)用程序。VB 可運(yùn)行直接來自Windows 95 或NT 桌面上的應(yīng)用程序,而VBA 的項(xiàng)目(Project)僅由使用VBA 的Excel、Word、 PowerPoint 等稱為宿主(Host)的Office 應(yīng)用程序(Application)來調(diào)用。
WordBasic 和 Visual Basic
在 Word 中,為完成具體的任務(wù),所用的是WordBasic 命令。 WordBasic 是從VBA 擴(kuò)展而來的一種專用于處理Word 自動(dòng)功能的語言,下面介紹它們在概念上的區(qū)別和它們的宏的相互轉(zhuǎn)換。WordBasic 和 Visual Basic 在概念上的區(qū)別
VBA 和WordBasic 之間主要的區(qū)別是 WordBasic 語言包含由大約 900 個(gè)命令組成的一張平面列表,而 Visual Basic 則包含了由對象組成的一個(gè)分層結(jié)構(gòu),每個(gè)對象都可提供一組特定方法和屬性(與 WordBasic 中的語句和函數(shù)相似)。大多數(shù) WordBasic 命令在任何時(shí)候都可運(yùn)行,而 Visual Basic 只在特定的時(shí)候提供有效對象的方法和屬性。
注意: 本書提到的Visual Basic 如果不加特別說明,都是指Visual Basic For Applications。
對象是 Visual Basic 這一宏偉大廈的基石,在 Visual Basic 中進(jìn)行的幾乎任何操作都與修改對象有關(guān)。Word 的任何元素(如文檔、段落、域、書簽等),都可以用 Visual Basic 中的對象來代表。與平面列表中的命令不同,部分對象只能通過其他對象才能加以訪問。例如,可以通過不同的對象(如 Style、Selection 和 Find 對象)來訪問 Font 對象。
應(yīng)用加粗格式的編程任務(wù)就表明了兩種編程語言之間的區(qū)別。下面的 WordBasic 指令對所選內(nèi)容應(yīng)用加粗格式。
下面的示例是 Visual Basic 語句,也是對所選內(nèi)容應(yīng)用加粗格式。
Selection.Font.Bold = True
Visual Basic 不包含 Bold 語句和函數(shù),卻有一個(gè)名為 Bold 的屬性(屬性通常指一個(gè)對象的特性,例如大小、顏色,或者是否是加粗)。Bold 是 Font 對象的一個(gè)屬性。同樣地,F(xiàn)ont 是返回一個(gè) Font 對象的 Selection 對象的一個(gè)屬性。按照下面的對象結(jié)構(gòu),可以生成指令,以將加粗格式應(yīng)用于所選內(nèi)容。
Bold 屬性是一個(gè) Boolean 類型、可讀寫的屬性。這意味著可以將 Bold 屬性設(shè)置為 True 或 False(真或假),也可返回當(dāng)前值。下面 WordBasic 指令的返回值表明是否將加粗格式應(yīng)用于所選內(nèi)容。
x = Bold()
下面的示例是 Visual Basic 語句,返回所選內(nèi)容的加粗格式的狀態(tài)。
x = Selection.Font.Bold
要在 Visual Basic 中執(zhí)行一個(gè)任務(wù),就需要確定合適的對象。例如,如果用戶想應(yīng)用【字體】對話框中的字符格式,可使用 Font 對象。然后需要確定如何理順從 Application 對象到 Font 對象的 Word 對象結(jié)構(gòu),以找到包含需要修改的 Font 對象的對象。在確定了該對象的路徑之后(例如,Selection.Font),可使用 Visual Basic 編輯器中的【對象瀏覽器】、【幫助】或【自動(dòng)列表成員】之類的功能來確定可將什么屬性和方法應(yīng)用于該對象。
將 WordBasic 宏轉(zhuǎn)換為 Visual Basic
宏可使任務(wù)自動(dòng)化,如果在 Word 中重復(fù)進(jìn)行某項(xiàng)工作,可用宏使其自動(dòng)執(zhí)行。宏是將一系列的 Word 命令和指令組合在一起,形成一個(gè)命令,以實(shí)現(xiàn)任務(wù)執(zhí)行的自動(dòng)化。用戶可創(chuàng)建并執(zhí)行一個(gè)宏,以替代人工進(jìn)行一系列費(fèi)時(shí)而重復(fù)的 Word 操作。事實(shí)上,它是一個(gè)自定義命令,用來完成所需任務(wù)。
宏的一些典型應(yīng)用如:加速日常編輯和格式設(shè)置、組合多個(gè)命令、使對話框中的選項(xiàng)更易于訪問、使一系列復(fù)雜的任務(wù)自動(dòng)執(zhí)行等。
Word 提供了兩種創(chuàng)建宏的方法:宏錄制器和 Visual Basic 編輯器。宏錄制器可幫助用戶開始創(chuàng)建宏。Word 在 VBA 編程語言中把宏錄制為一系列的 Word 命令??稍?Visual Basic 編輯器中打開已錄制的宏,修改其中的指令。也可用 Visual Basic 編輯器創(chuàng)建包括 Visual Basic 指令的非常靈活和強(qiáng)有力的宏,這些指令無法采用錄制的方式。
當(dāng)?shù)谝淮芜M(jìn)行下列任何操作時(shí),Word 2000 將自動(dòng)轉(zhuǎn)換 Word 6.x 或 Word 95 模板中的宏。
相關(guān)文章
陽歷/農(nóng)歷轉(zhuǎn)換對照表怎么做? Excel制作日歷表/萬年歷的最終版
想要制作陽歷/農(nóng)歷轉(zhuǎn)換對照表,,通過這個(gè)對照表,你只需知道陽歷日期,就可以快速準(zhǔn)確的找到對應(yīng)的農(nóng)歷日期,下面我們就來看看詳細(xì)制作方法2025-04-10三分鐘就搞定! Excel快速制作一個(gè)日歷表/萬年歷的技巧
工作上需要制作一個(gè)日歷表/萬年歷,該怎么制作呢?我們需要使用三個(gè)excel函數(shù)來實(shí)現(xiàn),詳細(xì)請看下文介紹2025-04-10這個(gè)函數(shù)公式簡直太強(qiáng)了! excel按權(quán)重求和計(jì)算的技巧
Excel中有一個(gè)功能非常強(qiáng)大的函數(shù),它就是SUMPRODUCT函數(shù),既能求和、計(jì)數(shù)、權(quán)重計(jì)算,還能排名等,今天我們就來看看Excel根據(jù)權(quán)重求和的技巧2025-04-10tocol函數(shù)哪個(gè)版本能用? excel中tocol函數(shù)的兩種高級用法
TOCOL函數(shù)公式非常強(qiáng)大,值得一學(xué),從字面意義可以理解出來,它是將數(shù)據(jù)轉(zhuǎn)換成一列的,今天分享TOCOL函數(shù)的2種高級用法2025-04-10Excel隱藏行和折疊行有什么不同? 隱藏行和折疊使用方法和區(qū)別介紹
excel表格進(jìn)行操作的時(shí)候,發(fā)現(xiàn)有隱藏和和折疊行,看上去效果一樣,都隱藏了,但是兩者是有很大區(qū)別的,詳細(xì)請看下文介紹2025-03-21Excel工齡計(jì)算不再愁! Excel隱藏函數(shù)DATEDIF輕松計(jì)算精確到天級的工齡
在日常工作中,我們經(jīng)常需要計(jì)算員工的工齡,以便進(jìn)行人事管理、薪資調(diào)整等工作,本文將詳細(xì)介紹如何在Excel表格中計(jì)算工齡,并提供多種實(shí)用方法供您選擇2025-03-13快速提高工作效率! Excel高手的8個(gè)技巧勸你學(xué)學(xué)
Excel數(shù)據(jù)處理遇到的問題,99%都是由于奇葩的數(shù)據(jù)格式造成的,今天跟大家整理了幾個(gè)Excel表格構(gòu)建的規(guī)則,先不要問為什么,照著做就對了2025-03-06Excel透視表1月到12月不能排序怎么辦? 數(shù)據(jù)透視表日期無法排序解決方法
如圖對數(shù)據(jù)透視表日期進(jìn)行升序排序后,仍不是我們想要的結(jié)果,有可能月份是文本,不能排列,下面我們就來看看詳細(xì)解決辦法2025-03-06財(cái)務(wù)審計(jì)必會(huì)! 2分鐘搞定用excel做賬齡劃分的技巧
首先咱們得明確一下賬齡的概念,簡單來說,賬齡就是某個(gè)賬戶的余額從產(chǎn)生到現(xiàn)在的時(shí)間長度,比如,一年以內(nèi)的賬齡就是那些在過去一年內(nèi)產(chǎn)生的債權(quán)或債務(wù),下面我們就來看看2025-03-06實(shí)現(xiàn)辦公自動(dòng)化! DeepSeek搭配Excel制作自定義按鈕的技巧
DeepSeek生成想要的代碼很方便,如果將生成的代碼放到excel中作為vba代碼使用,豈不是能實(shí)現(xiàn)辦公自動(dòng)化?下面我們就來看看實(shí)現(xiàn)方法2025-03-05