一、VBA代碼含義
Microsoft Word是一個集成化環境,是美國微軟公司的字處理系統,但是它決不僅僅是一個字處理系統,它集成了Microsoft Visual Basic,可以通過編程來實現對Word功能的擴展。
Microsoft Visual Basic在word中的代碼即Word的宏,通過編寫Word宏,可實現一些文檔處理的自動化,如實現文檔的自動備份、存盤等,可擴展Word文檔的功能,因此,能夠充分利用Word的特性,甚至使Word成為自己軟件的一部分。
Word的宏既有有利的一部分,因為它能夠幫助我們實現文檔的自動化,但是Word的宏也不是純粹的有利,有時它可能危害我們的文檔、計算機系統甚至網絡,從最開始的Taiwan NO1宏病毒到現在的Melissa宏病毒,從最開始的簡單的提示,耗盡系統資源到現在的亂發電子郵件,將個人的信息發送到網絡上,甚至向硬盤的Autoexec.bat(自動批處理文件)中添加Deltree C: -y,破壞整個Windows系統。
二、Word中內嵌的Com技術 可以說Word是對Com技術支持最好的軟件,這樣說似乎是太極端了一點,但是Word提供的強大的編程接口技術卻能夠是我們通過程序控制Word的任何一部分。無論是文件的打開、存盤、打印還是文檔中表格的自動繪制。
通過編程軟件,可以靈活的操縱Word,這裡只以Borland Delphi為例,進行詳細描述:
1、 在Delphi中調用Word軟件/文件的方法 在Word中調用Word軟件,歸納起來有三種方法:
。通過Delphi的控件TOleContainer 將Word嵌入
a.使用Delphi提供的Servers控件調用Word,使用Word的屬性
b.通過真正的Com技術,將Office軟件目錄中文件MSWord9.OLB中的類庫全部導入Delphi中,利 用Com技術編程
c.使用CreateOleObject將啟動Word,然後以Ole方式對Word進行控制。
2、對幾種方法的難易程度的判別
a.通過Delphi的控件TOleContainer 將Word嵌入
這是最簡單的Ole嵌入,能夠直接將Word文檔調用,只需要使用ToleContainer.Run就可以將Word文檔直接啟動。且這樣啟動的Word文檔與Delphi程序是一個整體(從界面上看),但是它存在不可克服的缺點,即不能通過Delphi控制Word文檔,也就不能實現將靈活操縱Word的目的。
b.使用Delphi提供的Servers控件調用Word,使用Word的屬性
使用Delphi的Servers控件來操縱Word,在編程時Delphi能夠實現代碼提示,總體上看能夠較好的實現Delphi對Word的控制,但是還有一些Word的功能不能在Delphi中調用(比如自己編寫的VBA宏代碼)。且實現功能時本來在VBA代碼中可選則參數在Delphi調用的時候必須添加,否則,連編譯都不能通過。本方式啟動的Word與Delphi程序分屬兩個窗體。此辦法僅能作為一個參考。
c.通過真正的Com技術,將Office軟件目錄中文件MSWORD9.OLB中的類庫全部導入Delphi中,利用Com技術編程利用真正的Com技術,將MsWord9.OLD文件類庫導入,然後利用Com技術進行使用。整體上類似使用Delphi的Servers控件,稍微比Servers控件麻煩,優缺點與Servers控件相同。
d.使用CreateOleObject將啟動Word,然後以Ole方式對Word進行控制。
本辦法是使用以CreateOleObjects方式調用Word,實際上還是Ole,但是這種方式能夠真正做到完全控制Word文件,能夠使用Word的所有屬性,包括自己編寫的VBA宏代碼。
與Servers控件和com技術相比,本方法能夠真正地使用Word的各種屬性,和在VBA中編寫自己的代碼基本一樣,可以缺省的代碼也不需要使用。本方式啟動的Word與Delphi程序分屬兩個窗體。缺點是使用本方法沒有Delphi代碼提示,所有異常處理均需要自己編寫,可能編寫時探索性知識比較多。
三
、Word宏編輯器 Word能夠真正地進行VBA代碼的編輯,可以編寫窗體、函數。
進入Word宏編輯器的方法:工具->宏->Visual Basic編輯器,可進入Visual Basic編輯器界面。Word的Visual Basic編輯器界面和真正的Visual Basic編輯器基本相同,在此不再向詳述。在VBA代碼中,可以添加用戶窗體、模塊、類模塊。用戶窗體、模塊、類模塊的概念和Visual Basic完全相同。注釋也與Visual Basic完全相同。
可以將光標停留在窗體、模塊的任何一個子程序上,直接按“F5”運行當前子程序。
四、Word的宏的概述
Word充分地將文檔編輯和VB結合起來,真正地實現文檔的自動化。使用Word編程,類似於使用Visual Basic,所不同的是,在Word中,能夠直接運行某一個子程序,直接看見結果,Word的宏,只能解釋運行,而Visual Basic,現在已經能夠編寫成真正的機器碼,從代碼的保護上來說,應該盡可能地減少Word的VBA代碼數量,尤其是關鍵