程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> MSOffice開發工具--VBA

MSOffice開發工具--VBA

編輯:VB綜合教程
一、VBA的發展過程
  ----在Office中包含著一種加強Office功能的語言,即為Basic語言。經過發展,在Office97中,Word、Excel、Access、PowerPoint四個軟件都有了自己的程序設計語言,分別稱為MicrosoftWordVisualBasic、MicrosoftExcelVisualBasic、MicrosoftAccessVisualBasic、MicrosoftPowerPointVisualBasic。通常統一稱為VBA。在Outlook中的開發語言為VisualBasicScriptingEdition,而不是一個完全的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中的主要對象。

----在PowerPoint中,Application對象中包容了PowerPoint的菜單欄、工具欄等的相應對象,以及演示文檔對象等等。演示文檔對象是MicrosoftPowerPointVisualBasic中的主要對象。

----2.基於對象的開發

----(1)使用MicrosoftOffice對象

----Office已經具有了強大的功能,Office的對象模型使得可以使用MicrosoftOffice中的對象來完成自己的工作。程序員可以不必浪費時間開發自己的組件,只需充分地利用Office的功能。Office開發者可以在Office的基礎上進行自己的開發,而不必一切從頭開始。例如,Office開發者可以使用Word的拼寫檢查器,而不必自己來開發一個拼寫檢查器。

----(2)用戶創建對象

----Office開發者可以在Office對象中創建自己的對象:可以創建自己的菜單和工具欄,添加到Office的對象集合中;可以創建一個窗體,並且在窗體中添加控件,等等。例如,在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中,可以利用VisualBasic創建窗體,並在窗體中添加控件等用戶接口元素。通過用戶接口,應用程序可以得到用戶的請求,並對其作出響應。

----(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=“區分大小寫"

----命令按鈕控件CommandButton1Caption=“確定"

----標簽控件Label1Caption=“輸入您要統計的字符:"

----2.在單擊命令按鈕控件CommandButton1後便執行統計工作,代碼如下:

PrivateSubCommandButton1_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()函數用來知道是否找到指定的字符。

----最後,彈出一個消息框來告知字符在文檔中出現的次數。

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved