學(xué)點VBA---WORD的編程工具_(dá)第1頁
學(xué)點VBA---WORD的編程工具_(dá)第2頁
學(xué)點VBA---WORD的編程工具_(dá)第3頁
學(xué)點VBA---WORD的編程工具_(dá)第4頁
學(xué)點VBA---WORD的編程工具_(dá)第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué)點VBA-WORD的編程工具 首頁目錄 深入淺出學(xué)WORD(八)學(xué)點VBA-WORD的編程工具董占山在前幾講中我們提到了WORD的宏功能,本講將就這個議題展開,較深入地討論WORD的編程功能。您通過這一講的學(xué)習(xí),將會明白原來編程并不困難,困難的只是向自己的錯誤觀念挑戰(zhàn)。宏和VBA的基本概念在模板一講我們講到宏是一種排版工具。那么宏到底什么呢?其實宏是用一種Word自帶的編程語言VBA創(chuàng)建的程序。在WORD系統(tǒng)中,大量使用了宏命令,如Word的向?qū)Ь褪鞘褂煤甑淖畹湫屠?。還有,聽說過宏病毒吧,它也是用VBA寫成的。先講講什么是VBA?VBA的全稱是Visual Basic for Applic

2、ation,意思是面向應(yīng)用的Visual Basic。VBA是所有Office 97組件公用的一種編程語言,而且編程的方法類似于Visual Basic 5.0開發(fā)平臺。所以說,VBA是一種功能強(qiáng)大的Windows編程語言,通過它可以把您帶入到Windows編程的殿堂。你可能會問:我從來沒有編過程序,能使用VBA編程嗎?答案是肯定的。學(xué)習(xí)了這一講,你就會知道編程并不難,從此,你或許會經(jīng)常享受到編寫程序的酸甜苦辣了!宏(Macro)是用VBA命令編寫的一段程序,它可以控制WORD按一定順序執(zhí)行一系列工作。宏命令主要用來將編輯、排版過程中經(jīng)常重復(fù)的步驟或一些復(fù)雜的操作過程組合起來,達(dá)到簡化操作,提

3、高文檔的編排效率的目的。利用宏命令,還可以實現(xiàn)一些WORD原本沒有的功能,從而擴(kuò)展WORD的功能。宏命令制作好之后,您可以將它賦予工具欄按鈕、菜單項或快捷鍵,這樣就可以象使用WORD本身的命令一樣,通過工具欄按鈕、菜單命令或者快捷鍵來運(yùn)行宏。對WORD向?qū)Ц械缴衩貑??其實它就是用VBA編寫的宏命令,只是它存放在特殊的WORD文檔中,又利用WORD的自動宏,當(dāng)您打開這種文檔時,這些充當(dāng)向?qū)У暮昝罹涂梢宰詣訄?zhí)行。錄制與運(yùn)行宏學(xué)習(xí)VBA的最簡捷的途徑是錄制并編輯宏命令,你會在不斷的學(xué)習(xí)中提高自己的編程水平。下面介紹錄制和運(yùn)行宏命令的方法。錄制宏WORD的宏錄制器就象一個錄像機(jī),將攝入鏡頭的所有畫面

4、(操作步驟)忠實地記錄到錄像帶(VBA程序)上,在以后需要重復(fù)觀看(執(zhí)行)相同畫面(步驟)時重放。使用宏錄制器有一點限制,它不能錄制文檔正文中的鼠標(biāo)操作,在需要移動插入點、選擇正文的時候,您必須使用鍵盤命令。除此之外,您用鼠標(biāo)在菜單或工具欄上執(zhí)行的命令,宏錄制器會都忠實地記錄。錄制宏的操作步驟:單擊"工具"*"宏"*"錄制新宏"命令,彈出圖1所示的錄制宏對話窗口,在"宏名"編輯框中輸入宏的名稱,WORD默認(rèn)的宏名是"Macro"加上一個數(shù)字1、2、,如果當(dāng)前文檔是基于非默認(rèn)模板(即不是Norma

5、l.dot)的文檔,而且您希望該宏只保存在該類模板上,在"將宏保存在"下拉列表框中選中所用模板,在"說明"編輯框中輸入宏命令功能的解釋性文字,便于以后查找使用,如果想讓錄制的宏指定到工具欄、鍵盤上,單擊"將宏指定到"組框中的相應(yīng)按鈕,根據(jù)對話框的提示,將宏指定到工具欄、鍵盤上。單擊錄制宏對話窗口的"確定"按鈕,這時,在屏幕上出現(xiàn)一個"錄制宏"工具欄窗口,鼠標(biāo)指針變成一個帶有一合磁帶的箭頭 ,一步一步執(zhí)行您要錄制的所有操作,錄制完畢,單擊"錄制宏"工具欄上的"停止&q

6、uot;按鈕,結(jié)束宏的錄制。圖1 錄制宏對話窗口運(yùn)行宏運(yùn)行宏的方法有5種:給宏定義一個快捷鍵,只要按快捷鍵就可運(yùn)行之;將宏定義為一個菜單命令,單擊菜單命令運(yùn)行之;把宏指定到工具欄上,使其與一個圖標(biāo)按鈕相對應(yīng),單擊圖標(biāo)按鈕運(yùn)行之;自動運(yùn)行;從宏對話框中運(yùn)行。前3種方法需要通過"工具"菜單的"自定義"命令將宏定義到菜單、工具欄或快捷鍵后才能使用;自動執(zhí)行是對一類特殊的宏而言的;只有最后一種,任何宏甚至所有的Word命令都可以通過這種方法執(zhí)行。有一種特殊的宏,與WORD的操作事件相關(guān)聯(lián),當(dāng)執(zhí)行這些事件時,與之關(guān)聯(lián)的宏就自動運(yùn)行,這種宏叫自動宏。WORD能識別五

7、種自動宏:自動更新(AutoNew)、自動打開(AutoOpen)、自動關(guān)閉(AtuoClose)、自動執(zhí)行(AutoExec)和自動退出(AutoExit)。在括號中的英文就是這些宏的名稱,您不能用其它名字來代替,假如您使用其它名字WORD就把它們當(dāng)作普通的宏對待。因此,如果您編寫或錄制宏時,也不要將普通的宏命名為自動宏的名稱。如果您對自動宏還是不大理解的話,打個比方也許您馬上就明白了,自動宏對于WORD的作用就好比CONFIG.SYS和AUTOEXEC.BAT對于DOS系統(tǒng)的作用一樣,在DOS啟動時,如果存在CONFIG.SYS和AUTOEXEC.BAT,那么,DOS就會自動執(zhí)行它們,如果

8、這兩個文件不存在,DOS就顯示當(dāng)前的日期和時間。單擊"工具"菜單中的"宏"命令,彈出Error! Reference source not found.所示的宏對話窗口;如果您知道宏名,您可以在"宏名"編輯框中直接鍵入宏名;如果您不知道或記不清宏名,請在"宏名"列表框中查找,查到后,單擊選中它;這時對話窗口如Error! Reference source not found.所示;單擊運(yùn)行按鈕,或直接按鍵,運(yùn)行選定的宏。用VBA直接創(chuàng)建宏如果還沒有制定的宏,您需要使用創(chuàng)建宏功能創(chuàng)建它;如果已經(jīng)存在指定的宏,可以通過

9、編輯宏來改變它的功能。創(chuàng)建宏創(chuàng)建宏與錄制宏相仿,不同的是由您自己來編寫WORDBASIC程序,而非將操作錄制下來,這允許您編寫一些用錄制的方法做不到的宏命令,從而有效地擴(kuò)充WORD系統(tǒng)。創(chuàng)建宏的步驟:單擊"工具"菜單中的"宏"命令,彈出宏對話窗口;在"宏名"編輯框中輸入欲創(chuàng)建宏的名稱,如"AutoExit",這時對話窗口變成Error! Reference source not found.所示的形式;單擊創(chuàng)建按鈕,進(jìn)入宏編輯窗口,如Error! Reference source not found.所示;在Sub

10、 MAIN和End Sub之間輸入WORDBASIC的命令和函數(shù),以完成一定的操作;當(dāng)您編寫好宏后,單擊"文件"菜單中的"關(guān)閉"命令,彈出提示窗口;單擊是按鈕,保存宏命令到共用模板上,完成宏的創(chuàng)建。編輯或查看宏如果一個宏命令已經(jīng)存在,但您想修改之,可以按照如下步驟打開宏編輯窗口:單擊"工具"菜單中的"宏"命令,彈出和對話窗口;在"宏名"列表框中選中宏一個欲編輯的宏;單擊編輯按鈕,切換到。一旦打開宏編輯窗口,您就可以在Sub MAIN和End Sub之間插入有效的WORDBASIC指令,開始用WO

11、RDBASIC語言編程,關(guān)于WORDBASIC語言的命令和函數(shù)WORD提供了完整的幫助文本,這里不多講,有興趣的讀者可以打開WORD的幫助目錄,查找與WORDBASIC有關(guān)的信息。技巧:您可以先錄制一個包含主要命令的宏,然后再把它調(diào)入宏編輯窗口進(jìn)行編輯、修改,這樣往往可以節(jié)省大量的編程時間,同時減少程序中的錯誤,提高編程的效率。自己動手,豐衣足食講了一大堆廢話,快給我們提供幾個實用的宏命令吧,讓我們看看效果如何。好的,學(xué)以致用,我們提供兩個比較實用的宏命令,供讀者學(xué)習(xí)參考。自動輸入分?jǐn)?shù)的宏我們在編輯科技文檔時常常要用到分?jǐn)?shù),可是WORD中不能直接輸入分?jǐn)?shù),可以使用WORD的EQ(方程)域來實現(xiàn)

12、,也可以使用公式編輯器來實現(xiàn)。這兩種方法都不簡便,下面的Fraction宏命令可以在文檔中方便地插入分?jǐn)?shù)域。使用方法是:將插入點定位到需要插入分?jǐn)?shù)的位置,運(yùn)行該宏,彈出如圖-1所示的對話窗口,分別在"分子表達(dá)式"和"分母表達(dá)式"編輯框中輸入分?jǐn)?shù)的分子和分母,單擊確定按鈕輸入分?jǐn)?shù)域。圖-1 輸入分?jǐn)?shù)對話窗口Fraction程序清單:Sub MAINBegin Dialog UserDialog 192, 122, "輸入分?jǐn)?shù)"TextBox 14, 20, 160, 18, .TextBox1Text 15, 6, 76, 13, &q

13、uot;分子表達(dá)式", .Text1TextBox 17, 64, 160, 18, .TextBox2Text 17, 50, 76, 13, "分母表達(dá)式", .Text2OKButton 36, 92, 50, 21CancelButton 101, 92, 49, 21End DialogDim dlg As UserDialogx = Dialog(dlg)If dlg.Textbox1 <> "" And dlg.textbox2 <> "" Thenfractiontext$ = &qu

14、ot;EQ F(" + dlg.textbox1 + "," + dlg.textbox2 + ")"ToolsOptionsView .FieldCodes = 1InsertField .Field = fractiontext$ToolsOptionsView .FieldCodes = 0End IfEnd Sub插入3行并列字符組合的宏在介紹域功能那一講,我們適用公式域編排了英文試卷或書籍的改錯題版式。這里提供的VBA程序CombineChars就是用來簡化這一排版過程的。CombineChars的使用方法:將插入點移到需要這種版式的

15、位置,運(yùn)行這個宏,彈出圖-2所示的對話窗口,在"線上字符"編輯框中輸入英語單詞或詞組,在"線下字符"編輯框中輸入字母A、B、C等,單擊確定按鈕在文檔中插入域。圖-2 創(chuàng)建3行組合字符的對話窗口CombineChars宏程序清單:Sub MAINBegin Dialog UserDialog 290, 86, "創(chuàng)建3行組合字符"Text 7, 7, 61, 13, "線上字符", .Text1TextBox 7, 20, 160, 18, .FirstTextText 8, 48, 61, 13, "線下

16、字符", .Text3TextBox 7, 61, 160, 18, .ThirdTextOKButton 191, 18, 88, 21CancelButton 192, 55, 88, 21End DialogDim dlg As UserDialogx = Dialog(dlg)If x = - 1 ThenIf dlg.FirstText <> "" ThenSecondText$ = String$(Len(dlg.FirstText), "-")CombineText$ = "eq o (s up 0(&quo

17、t; + dlg.FirstText + "),s do 5(" + SecondText$ + "),s do 10(" + dlg.ThirdText + ")"ToolsOptionsView .FieldCodes = 0InsertField .Field = CombineText$End IfEnd IfEnd Sub查找特定文本,加工處理后,再進(jìn)行替換下面這個宏命令,提供了一種完成用Word命令不可能完成的功能,它首先在文檔中查找特定的文本,當(dāng)查找到文本后,選中該文本前的若干字符,從中提取一個有效的數(shù)值,對數(shù)值進(jìn)行計算

18、加工,講計算出的數(shù)值在轉(zhuǎn)換為字符串,替換掉原來的數(shù)值字符串,最后將原來查找的文本也替換成另外一個文本。這個宏的用途是修改一篇文檔中指定單位的數(shù)值為另一種單位的數(shù)值。這種修改,如果手工進(jìn)行將是費(fèi)時費(fèi)力,非常容易出錯。這個宏命令的用途就在于此。Sub repl()Attribute repl.VB_Description = "宏在 98/11/10 由 Clone 創(chuàng)建"Attribute repl.VB_ProcData.VB_Invoke_Func = "normal.NewMacros.repl"'' repl Macro'

19、宏在 98/11/10 由 Clone 創(chuàng)建'Found1 = TrueIf Found1 Then Selection.Find.ClearFormatting With Selection.Find .Text = "gf/tex" ' 寫實際的單位 .Forward = True .Wrap = wdFindContinue .MatchByte = True End With Selection.Find.Execute Found1 = Found If Found Then Selection.Cut Selection.MoveLeft Uni

20、t:=wdCharacter, Count:=4, Extend:=wdExtend MyText = Selection.Text x1 = Val(MyText) x2 = Int(x1 / 0.98) * 10) / 10 '將0.98替換為自己的轉(zhuǎn)換值 NewStr = "" For i = 1 To Len(MyText) y = Left(MyText, 1) MyText = Right(MyText, Len(MyText) - 1) For j = 0 To 9 If y = Chr(48 + j) Then GoTo L1 Next j NewStr = NewStr + y Next iL1: y1 = Str(x2) NewStr = NewStr + y1 + "cN/tex" '將$替換為實際單位 Selection.Text = NewStr End IfEnd If' Selection.MoveRight Unit:=wdCharacter, Count:=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論