在Office中包含著一種加強Office功能的語言,即為Basic語言。經過發展,在Office97 中,Word、Excel、Access、PowerPoint四個軟件都有了自己的程序設計語言,分別稱為Microsoft WordVisualBasic、MicrosoftExcelVisualBasic、MicrosoftAccessVisualBasic、Microsoft PowerPointVisualBasic。通常統一稱為VBA。在Outlook中的開發語言為VisualBasicScripting Edition,而不是一個完全的VBA。不過,VisualBasicScriptingEdition是VBA的一個較小 的子集,它與VBA兼容。當然,有一些VBA支持的特性,VisualBasicScriptingEdition并不 支持。
二、VBA開發特點
1.MicrosoftOffice對象模型
VisualBasic是一種面向對象的開發語言。VBA 將MicrosoftOffice中的每一個應用程序都看成一個對象。每個應用程序都由各自的Application 對象代表。
在Word中,Application對象中包容了Word的菜單欄、工具欄、Word命 令等的相應對象,以及文檔對象等等。菜單欄對象中包容了所有的菜單及菜單命令。工具欄對 象中包容了各種命令按鈕。文檔對象中則包容了所有的文字、表格、圖像等文檔組成部分的相 應對象。文檔對象是MicrosoftWordVisualBasic中的主要對象。
在Excel中, Application對象中包容了Excel的菜單欄、工具欄等的相應對象,以及工作表對象和圖表對 象等等。工作表對象和圖表對象是MicrosoftExcelVisualBasic中的主要對象。
在Access 中,Application對象中包容了Access的菜單欄、工具欄等的相應對象,以及報表對象和窗體 對象等等。報表對象和窗體對象是MicrosoftAccessVisualBasic中的主要對象。
在Power Point中,Application對象中包容了PowerPoint的菜單欄、工具欄等的相應對象,以及演 示文檔對象等等。演示文檔對象是MicrosoftPowerPointVisualBasic中的主要對象。
2. 基于對象的開發
(1)使用MicrosoftOffice對象
Office已經具有 了強大的功能,Office的對象模型使得可以使用MicrosoftOffice中的對象來完成自己的工 作。程序員可以不必浪費時間開發自己的組件,只需充分地利用Office的功能。Office開發 者可以在Office的基礎上進行自己的開發,而不必一切從頭開始。例如,Office開發者可以使 用Word的拼寫檢查器,而不必自己來開發一個拼寫檢查器。
(2)用戶創建對象
Office 開發者可以在Office對象 唇ㄗ約旱畝韻螅嚎梢源唇ㄗ約旱牟說ズ凸ぞ呃福砑擁絆ffice 的對象集合中;可以創建一個窗體,并且在窗體中添加控件,等等。例如,在Word中,可以往自 動更正的詞庫中添加自己的詞條。
3.VBA開發Office的功用
有人 也許覺得Office的功能已經足夠強大了,是否還有必要使用VBA來開發Office。的確,即使根 本不用編寫一句語句,Office就可以完成用戶所能遇到的各種任務。但是,人們對效率的追求 是永不滿足的,這就是使用VBA來開發Offic的原動力。
(1)VBA可以使Office任 務自動化
在使用Office的過程中,往往要遇到一些重復性的系列工作,特別是在 處理大批量的文檔或數據時。通過錄制宏或使用VisualBasic編寫宏,使一系列的工作只需 要一個指令便能完成,這就成倍地提高了工作效率。
(2)VBA可以定制Office滿 足自己的需要
Office是一個功能異常龐雜的軟件包,對某一用戶來所說,許多 命令可能一輩子也用不著,而另外一些命令可能得經常使用。有時候,功能復雜反而顯得多余。
另外,Office的外觀顯得異常的繁雜,許多用戶面對如此繁雜的界面往往手足無 措。
通過VBA可以設置自己的界面,把自己經常用到的菜單命令和工具欄放置到 顯眼的地方,隱藏一些不常用的菜單或工具欄,并且,可以把自己所編寫的宏設置為菜單命令 或設置為工具欄中的命令按鈕,方便了使用。
并且,可以根據自己的需要來定制Office 的功能,滿足自己的需要。
(3)VBA可以增強Office的功能
Office 的功能雖然強大,但它不可能考慮到所有情況,而且情況是千變萬化的,各種情況都有特定的 要求。
通過VBA可以增強Office的功能,以處理各種各樣的任務。例如,可以設置Word 拼寫檢查的詞庫;可以往詞庫中添加新的詞語;可以設置自動更正,設置自己經常遇到的誤拼 等。
(4)VBA可以增強Office與用戶的交互
在Office中,可以利用Visual Basic創建窗體,并在窗體中添加控件等用戶接口元素。通過用戶接口,應用程序可以得到用 戶的請求,并對其作出響應。
(5)VBA可以集成Office的功能
Office 不是幾個軟件的簡單組合,而成為一個有機的整體發揮巨大的作用。VisualBasic提供了集 成Office的功能的一種手段。
通過OLE(對象的鏈接和嵌入)和DDE(動態數據交換) 技術的使用可以集成Office的功能。例如,利用VisualBasic,可以在Word文檔中鏈接Excel 數據表,調用Excel來對該數據進行處理。在Excel中處理該數據表,得到結果也要刷新Word文 檔中的數據表,保持了數據的更新。這時的文檔確切地說應該是一個復合文檔。
OLE 自動化技術則提供了一種在應用程序中控制源文檔的方法。OLE自動化的優點是,在單一的環 境中工作,同時可以使用其他應用程序的功能。
在MicrosoftOffice環境中,利 用VisualBasic開發應用程序時,可以利用OLE自動化組合MicrosoftOffice中的多個應用 程序,建立自動化應用程序。MicrosoftOffice提供了大量的材料,只需把它們拼湊起來。
三、 簡單開發實例:
字符統計程序
有時候,要對某字符在文檔中的出現次數進行統計。要完成這一任務,可以在Word中開發 一程序來較快地統計。
打開要統計的文檔后,在文本框中輸入要統計的字符,如“OK!”,然后選擇是否區分大小 寫,單擊“確定”按鈕,便可以進行統計了。
設計該程序的步驟如下:
1 .新建一窗體Userform1,窗體的caption屬性設置為“字符統計”。窗體中包容以下控件:
復 選框控件CheckBox1Caption=“區分大小寫"
命令按鈕控件CommandButton1 Caption=“確定"
標簽控件Label1Caption=“輸入您要統計的字符:"
2.在單擊命令按鈕控件CommandButton1后便執行統計工作,代碼如下:
Private SubCommandButton1_Click()
DimcountofappearasInteger
Selection.WholeStory
WithSelection
.Find.ClearFormatting
With.Find
.Text=UserForm1.TextBox1.Text
IfUserForm1.CheckBox1.Value=TrueThen
.MatchCase=True
Else
.MatchCase=False
EndIf
.Execute
EndWith
EndWith
IfNotSelection.Find.Found()Then
MsgBox“未找到"
ExitSub
EndIf
WhileSelection.Find.Found()
countofappear=countofappear+1
Selection.Find.Execute
Wend
MsgBox“找到了"&countofappear&“個"
EndSub
講解:首先用語句Selection.WholeStory選定全文。
使用Selection.find.execute 語句進行一次對字符的查找操作,如下:
WithSelection
.Find.ClearFormatting
With.Find
.Text=UserForm1.TextBox1.Text
IfUserForm1.CheckBox1.Value=TrueThen
.MatchCase=True
Else
.MatchCase=False
EndIf
.Execute
EndWith
EndWith
上述語句中使用Find對象的ClearFormatting方法作用是清除任何為 進行查找或替換操作所指定的格式,相當于“編輯”菜單“查找和替換”對話框中的“不限定格 式”按鈕。
另外,MatchCase屬性設置查找操作是否區分大小寫。
如果 沒有找到,則彈出一消息框,告知沒有找到,并退出子程序,語句為:
IfNotSelection.Find.Found() Then
MsgBox“未找到"
ExitSub
EndIf
如果找到一處,然后進行下一次查找,以下如此循環,每找到一次countofappear 變量便加1,來代表指定字符在文檔中出現的次數,語句為:
WhileSelection.Find.Found()
countofappear=countofappear+1
Selection.Find.Execute
Wend
在程序中Selection.Find.Found()函數用來知道是否找到指定的字符。
最后,彈出一個消息框來告知字符在文檔中出現的次數。