WordVBA學(xué)習(xí)交流資料全

上傳人:zh****u6 文檔編號:34807472 上傳時間:2021-10-23 格式:DOC 頁數(shù):116 大?。?96.01KB
收藏 版權(quán)申訴 舉報 下載
WordVBA學(xué)習(xí)交流資料全_第1頁
第1頁 / 共116頁
WordVBA學(xué)習(xí)交流資料全_第2頁
第2頁 / 共116頁
WordVBA學(xué)習(xí)交流資料全_第3頁
第3頁 / 共116頁

下載文檔到電腦,查找使用更方便

30 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《WordVBA學(xué)習(xí)交流資料全》由會員分享,可在線閱讀,更多相關(guān)《WordVBA學(xué)習(xí)交流資料全(116頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 Word VBA 學(xué)習(xí)交流資料 目錄 一、對象模型 打開Word VBA幫助,首先看到的是“Word的對象模型”(如下所示) 圖表 1 知識點:知道Application對象(Word應(yīng)該程序的總對象)、Doctuments對象(文檔集對象)、Paragraphs對象(段落集)、Selection(選中區(qū)域)對象、Tables(表格)對象、Sections(節(jié),即Word的第一節(jié))對象、Headers(頁眉)對象。 二、新增功能 (略) 原因:我們的初衷大多是從“零”開始,最基礎(chǔ)的我們都不知道,何來“新增”??? 但是,以后學(xué)到相關(guān)的知識時,會跳到這里,

2、學(xué)一些新增的“對象”、“方法”、“事件”、“屬性”等。 三、編程概念 對象是 Visual Basic 的結(jié)構(gòu)基礎(chǔ),在 Visual Basic 中進行的所有操作幾乎都與修改對象有關(guān)。Microsoft Word 的任何元素,如文檔、表格、段落、書簽、域等,都可用 Visual Basic 中的對象來表示。 什么是對象和集合? 對象代表一個 Word 元素,如文檔、段落、書簽或單獨的字符。集合也是一個對象,該對象包含多個其他對象,通常這些對象屬于相同的類型;例如,一個集合對象中可包含文檔中的所有書簽對象。通過使用屬性和方法,可以修改單獨的的對象,也可修改整個的對象集合。 例如: A

3、ctiveDocument.Paragraphs(2).Range.Characters(1).Font.Color = wdColorRed 在Word 的VBA中,大多數(shù)對象都是通過Application來訪問,但有幾個可以直接訪問:如activedocumnet、documents等,當(dāng)然通過application對象也行,但無疑后者更簡略。 什么是屬性? 屬性是對象的一種特性或該對象行為的一個方面。例如,文檔屬性包含其名稱、內(nèi)容、保存狀態(tài)以及是否啟用修訂。若要更改一個對象的特征,可以修改其屬性值。 若要設(shè)置屬性的值,可在對象的后面緊接一個句號、屬性名稱、一個等號及新的屬性值

4、。下列示例在名為“MyDoc.doc”的文檔中啟用修訂。 Sub TrackChanges() Documents("Sales.doc").TrackRevisions = True End Sub 在本例中,Documents 引用由打開的文檔(注意是對打開后文檔的操作)構(gòu)成的集合,而“MyDoc.doc”標(biāo)識集合中單獨的文檔。并設(shè)置該文檔的 TrackRevisions 屬性。 不能設(shè)置某些屬性。屬性的“幫助”主題中會標(biāo)明可以設(shè)置該屬性(可讀寫),或只能讀取該屬性(只讀)。 通過返回對象的一個屬性值,可以獲取有關(guān)該對象的信息。下列示例返回活動文檔的名稱。 Sub

5、 GetDocumentName() Dim strDocName As String strDocName = ActiveDocument.Name MsgBox strDocName End Sub (這個例子輸出的沒有路徑,只有名字.若帶路徑的話,把strDocName = ActiveDocument.Name改為:strDocName = ActiveDocument.Path & ActiveDocument.Name) 在本例中,ActiveDocument 引用 Word 活動窗口中的文檔。該文檔的名稱賦給了 strDocName 變量。

6、 說明:每個屬性的“幫助”主題表明可以設(shè)置該屬性(可讀寫),只能讀取該屬性(只讀),或只能寫入該屬性(只寫)。此外“Visual Basic 編輯器”中的“對象瀏覽器”在瀏覽窗口的底部顯示所選屬性的讀寫狀態(tài)。 什么是方法? 方法是對象可以執(zhí)行的動作。例如,只要文檔可以打印,Document 對象就具有 PrintOut 方法。方法通常帶有參數(shù),以限定執(zhí)行動作的方式。下列示例打印活動文檔的前三頁。 Sub PrintThreePages() ActiveDocument.PrintOut Range:=wdPrintRangeOfPages, Pages:="1-3" End

7、Sub 在大多數(shù)情況下,方法是動作,而屬性是性質(zhì)。使用方法將導(dǎo)致發(fā)生對象的某些事件(所以,有人說:“方法是集成了的事件”),而使用屬性則會返回對象的信息,或引起對象的某個性質(zhì)的改變。 返回一個對象 可通過返回集合中單獨的對象的方式來返回大多數(shù)對象。例如 Documents 集合包含打開的 Word 文檔??墒褂茫ㄎ挥?Word 對象結(jié)構(gòu)頂層的)Application 對象的 Documents 屬性返回 Documents 集合。 在訪問集合之后,可以通過在括號中使用索引序號(與處理數(shù)組的方式相似)返回單獨的對象。索引序號通常是一個數(shù)值或名稱。詳細內(nèi)容,請參閱返回集合中的對象。 下列

8、示例使用 Documents 屬性訪問 Documents 集合。索引序號用于返回 Documents 集合中的第一篇文檔。然后將 Close 方法應(yīng)用于 Document 對象,關(guān)閉 Documents 集合中的第一篇文檔。 Sub CloseDocument() Documents(1).Close End Sub 這個可能以后大多不用,原因就是索引序號在變,當(dāng)打開、關(guān)閉一個文檔時,對應(yīng)的序號就增加或減少了數(shù)字,所以不好把握,大多不用。 下列示例使用名稱(指定為一個字符串)來識別 Documents 集合中的 Document 對象。 Sub CloseSalesD

9、oc() Documents("Sales.doc").Close End Sub 這個常用,讓某個指定的文檔關(guān)閉。 集合對象通常具有可用于修改整個對象集合的方法和屬性。Documents 對象具有 Save 方法,可用于保存集合中的所有文檔。下列示例通過使用 Save 方法保存所有打開的文檔。 Sub SaveAllOpenDocuments() Documents.Save End Sub 所有的文檔保存,相當(dāng)于按住Shift再點擊文件下的全部保存命令。 Document 對象也可使用 Save 方法保存單獨的文檔。下列示例保存名為 Sales.d

10、oc 的文檔。 Sub SaveSalesDoc() Documents("Sales.doc").Save End Sub 對指定的文檔保存。 若要返回一個處于 Word 對象結(jié)構(gòu)底層的對象,就必須使用可返回對象的屬性和方法,“深入”到該對象。 若要查看該過程的執(zhí)行,請打開“Visual Basic 編輯器”,在“視圖”菜單上單擊“對象瀏覽器”。單擊左側(cè)“類”列表中的 Application。然后單擊右側(cè)“成員”列表中的 ActiveDocument?!皩ο鬄g覽器”底部會顯示文字,表明 ActiveDocument 是只讀的,該屬性返回 Document 對象。然

11、后單擊“對象瀏覽器”底部的 Document,則會在“類”列表中自動選定 Document 對象,并將在“成員”列表中顯示 Document 對象的成員。滾動成員列表,找到 Close,單擊 Close 方法?!皩ο鬄g覽器”窗口底部會顯示文字,說明該方法的語法。有關(guān)該方法的詳細內(nèi)容,請按 F1 (作者注:不把F1磨平,VBA很難真正掌握^-^)或單擊“幫助”按鈕,以跳轉(zhuǎn)到 Close 方法的“幫助”主題。 根據(jù)這些信息可編寫下列指令,以關(guān)閉活動文檔。 Sub CloseDocSaveChanges() ActiveDocument.Close SaveChanges:=wdS

12、aveChanges End Sub 關(guān)閉并保存改變。這里顯然,保存為方法,后面有參數(shù) 下列示例將活動文檔窗口最大化。 Sub MaximizeDocumentWindow() ActiveDocument.ActiveWindow.WindowState = wdWindowStateMaximize End Sub 這個是賦最大化值屬性給活動窗口 ActiveWindow 屬性返回一個 Window 對象,該對象代表活動窗口。將 WindowState 屬性設(shè)為最大常量(wdWindowStateMaximize)。 下列示例新建一篇文檔,并顯示“另存為”

13、對話框,這樣即可為文檔提供一個名稱。 Sub CreateSaveNewDocument() Documents.Add.Save End Sub 這個有意思,添加新文檔并保存,一步,利害吧 如果不是看幫助,你敢這么用嗎?方法.方法 Documents 屬性返回 Documents 集合。Add 方法新建一篇文檔,并返回一個 Document 對象。然后對 Document 對象應(yīng)用 Save 方法。 如上所示,可以使用方法或?qū)傩詠碓L問下層對象。也就是說,在對象結(jié)構(gòu)中,將方法或?qū)傩詰?yīng)用于某個對象的上一級對象,可返回該下級對象。返回所需對象之后,就可以應(yīng)用該對象的方法并

14、控制其屬性。要查看對象結(jié)構(gòu)分層的情況,請參閱 Microsoft Word 對象。 獲得有關(guān)對象、方法和屬性的“幫助”信息 在熟悉 Word 對象模型之前,可以利用一些工具來深入了解對象結(jié)構(gòu)。 自動成員列表。(重要)在“Visual Basic 編輯器”中,在對象后面鍵入句號 (.) 后,即顯示可用的屬性和方法的列表。例如,如果鍵入“Application.”,就會顯示 Application 對象的方法和屬性的下拉列表。 幫助。也可以使用“幫助”找到可應(yīng)用于對象的屬性和方法。“幫助”中的每個對象主題都包含一個“參閱”跳轉(zhuǎn),以顯示該對象的屬性和方法列表。在“對象瀏覽器”或某一模塊中按

15、 F1,可跳轉(zhuǎn)到相應(yīng)的“幫助”主題。 Microsoft Word 對象。該主題闡明在分級結(jié)構(gòu)中 Word 對象的排列方式。在結(jié)構(gòu)圖中單擊一個對象,可顯示相應(yīng)的“幫助”主題。 對象瀏覽器?!癡isual Basic 編輯器”中的“對象瀏覽器”顯示 Word 對象的成員(屬性和方法)。 ----------------------------------------- 實例:打開Word后,按Alt+F11,出現(xiàn)VBE窗口, 雙擊右邊的Thisdocument(當(dāng)然,放到底下的模塊中任一個也行),輸入如下內(nèi)容: Sub autoexec() Application.Ca

16、ption = "我愛我家!" End Sub 這時,關(guān)閉Word,再打開Word。 你的標(biāo)題就有“.doc—我愛我家!”了! 圖表 2 當(dāng)然,也可以進一步做成這樣: Sub autoexec() Dim a a = MsgBox("我家我家", vbYesNo, "這是一個試驗") If a <> 6 Then Application.Quit End If End Sub 功能就是打開Word時,顯示此對話框,如果點了“是”就不作處理即打開Word,否則,退出Quit。 也可以寫成這樣: Sub aut

17、oexec() Dim a a = InputBox("你的姓名", "防君子,不防小人!") If a <> "小小" Then Application.Quit End If End Sub 功能就是打開Word時,顯示此對話框,如果輸入的不是小小,就打不開。 MsgBox 函數(shù)參考: 在對話框中顯示消息,等待用戶單擊按鈕,并返回一個 Integer 告訴用戶單擊哪一個按鈕。 語法 MsgBox(prompt[, buttons] [, title] [, helpfile, context]) MsgBox 函數(shù)的語法具有以下

18、幾個命名參數(shù): 部分 描述 Prompt 必需的。字符串表達式,作為顯示在對話框中的消息。prompt 的最大長度大約為 1024 個字符,由所用字符的寬度決定。如果 prompt 的內(nèi)容超過一行,則可以在每一行之間用回車符 (Chr(13))、換行符 (Chr(10)) 或是回車與換行符的組合 (Chr(13) & Chr(10)) 將各行分隔開來。 Buttons 可選的。數(shù)值表達式是值的總和,指定顯示按鈕的數(shù)目及形式,使用的圖標(biāo)樣式,缺省按鈕是什么以及消息框的強制回應(yīng)等。如果省略,則 buttons 的缺省值為 0。 Title 可選的。在對話框標(biāo)題欄中顯示的字符串表達式。

19、如果省略 title,則將應(yīng)用程序名放在標(biāo)題欄中。 Helpfile 可選的。字符串表達式,識別用來向?qū)υ捒蛱峁┥舷挛南嚓P(guān)幫助的幫助文件。如果提供了 helpfile,則也必須提供 context。 Context 可選的。數(shù)值表達式,由幫助文件的作者指定給適當(dāng)?shù)膸椭黝}的幫助上下文編號。如果提供了 context,則也必須提供 helpfile。 設(shè)置值 buttons 參數(shù)有下列設(shè)置值: 常數(shù) 值 描述 vbOKOnly 0 只顯示 OK 按鈕。 VbOKCancel 1 顯示 OK 及 Cancel 按鈕。 VbAbortRetryIgnore 2

20、顯示 Abort、Retry 及 Ignore 按鈕。 VbYesNoCancel 3 顯示 Yes、No 及 Cancel 按鈕。 VbYesNo 4 顯示 Yes 及 No 按鈕。 VbRetryCancel 5 顯示 Retry 及 Cancel 按鈕。 VbCritical 16 顯示 Critical Message 圖標(biāo)。 VbQuestion 32 顯示 Warning Query 圖標(biāo)。 VbExclamation 48 顯示 Warning Message 圖標(biāo)。 VbInformation 64 顯示 Information Mes

21、sage 圖標(biāo)。 vbDefaultButton 1 0 第一個按鈕是缺省值。 vbDefaultButton 2 256 第二個按鈕是缺省值。 vbDefaultButton 3 512 第三個按鈕是缺省值。 vbDefaultButton 4 768 第四個按鈕是缺省值。 vbApplicationModal 0 應(yīng)用程序強制返回;應(yīng)用程序一直被掛起,直到用戶對消息框作出響應(yīng)才繼續(xù)工作。 vbSystemModal 4096 系統(tǒng)強制返回;全部應(yīng)用程序都被掛起,直到用戶對消息框作出響應(yīng)才繼續(xù)工作。 vbMsgBoxHelpButton 16384 將Help按

22、鈕添加到消息框 VbMsgBoxSetForeground 65536 指定消息框窗口作為前景窗口 vbMsgBoxRight 524288 文本為右對齊 vbMsgBoxRtlReading 1048576 指定文本應(yīng)為在希伯來和阿拉伯語系統(tǒng)中的從右到左顯示 第一組值 (0–5) 描述了對話框中顯示的按鈕的類型與數(shù)目;第二組值 (16, 32, 48, 64) 描述了圖標(biāo)的樣式;第三組值 (0, 256, 512) 說明哪一個按鈕是缺省值;而第四組值 (0, 4096) 則決定消息框的強制返回性。將這些數(shù)字相加以生成 buttons 參數(shù)值的時候,只能由每組值取用一個數(shù)字。

23、 注意 這些常數(shù)都是 Visual Basic for Applications (VBA) 指定的。結(jié)果,可以在程序代碼中到處使用這些常數(shù)名稱,而不必使用實際數(shù)值。 返回值 常數(shù) 值 描述 vbOK 1 OK vbCancel 2 Cancel vbAbort 3 Abort vbRetry 4 Retry vbIgnore 5 Ignore vbYes 6 Yes vbNo 7 No 說明 如果對話框顯示 Cancel 按鈕,則按下 ESC 鍵與單擊 Cancel 按鈕的效果相同。如果對話框中有 Help 按鈕,則對話框中提供有

24、上下文相關(guān)的幫助。但是,直到其它按鈕中有一個被單擊之前,都不會返回任何值。 注意 如果還要指定第一個命名參數(shù)以外的參數(shù),則必須在表達式中使用 MsgBox。為了省略某些位置參數(shù),必須加入相應(yīng)的逗號分界符。 一、通過錄制宏生成代碼 如果無法確定要使用的 Visual Basic 方法或?qū)傩?,可打開宏錄制器并進行手動操作。宏錄制器會將操作譯成 Visual Basic 代碼。錄制操作完成后,可根據(jù)需要修改代碼。例如,如果無法確定實現(xiàn)段落縮進的屬性或方法,可執(zhí)行下列操作: 1. 在“工具”菜單上,指向“宏”,然后單擊“錄制新宏”。 2. 如果需要,可更改默認的宏名稱,然后單擊“確定”啟動

25、錄制器。 3. 在“格式”菜單上,選定“段落”。 4. 更改段落左縮進的值,然后單擊“確定”。 5. 單擊“停止錄制”工具欄上的“停止錄制”按鈕。 6. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 7. 從步驟 2 中選擇宏的名稱,然后單擊“編輯”按鈕。 查看 Visual Basic 代碼來確定對應(yīng)于段落左縮進的屬性(LeftIndent 屬性)。將插入點置于 LeftIndent 之中,并按 F1 或單擊“幫助”按鈕。在幫助主題中,可以查看示例以及支持 LeftIndent 屬性的對象(單擊“應(yīng)用于”)。 (從上面可以看出,錄制宏是我們認識未知對象的很好方法之

26、一) 說明 錄制的宏使用 Selection 屬性返回 Selection 對象。例如,下列指令將所選段落縮進 0.5 英寸。 Sub IndentParagraph() Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5) End Sub 您也可以修改錄制的宏并與 Range 對象一起使用。 (我們在日常的使用中經(jīng)常注意到:在使用“本機上的模板”時的向?qū)Ь痛罅渴褂昧薙election對象,而不是Range對象!難道說微軟有更新層次的考慮?我想可能是Selection對象更穩(wěn)定,跨版本能力更強吧?。? 二、修

27、改錄制的 Visual Basic 宏 宏錄制器是查找所需的 Visual Basic 方法和屬性的非常方便的工具。如果不知道使用何種屬性或方法,可打開宏錄制器,手動執(zhí)行操作。宏錄制器會將操作譯為 Visual Basic 代碼。但錄制宏具有一些限制條件。您不能錄制下列內(nèi)容: 條件分支 變量指定 循環(huán)結(jié)構(gòu) 自定義用戶窗體 出錯處理 用鼠標(biāo)選定的文字(必須使用組合鍵) 若要增強宏的功能,可能需要修改錄制到模塊中的代碼。 刪除 Selection 屬性 使用宏錄制器創(chuàng)建的宏取決于所選內(nèi)容。在大多數(shù)錄制的宏指令的開頭,可以看到“Selection”。錄制的宏使用 Se

28、lection 屬性返回 Selection 對象。 例如,下列示例將所選內(nèi)容移動至 Temp 書簽,并在書簽之后插入文字。 Sub Macro1() Selection.Goto What:=wdGotoBookmark, Name:="Temp" Selection.MoveRight Unit:=wdCharacter, Count:=1 相當(dāng)于選中后按一個鍵盤的右方向鍵 Selection.TypeText Text:="New text" End Sub 這個宏雖然可以完成任務(wù),但是有一些缺點。首先,如果文檔中沒有一個名為 Temp 的

29、書簽,該宏將導(dǎo)致出錯。其次,該宏可能不正確地移動所選內(nèi)容。修改這個宏,使其不再使用 Selection 對象,就可解決上述兩個問題。以下就是經(jīng)修改后的宏: Sub MyMacro() If ActiveDocument.Bookmarks.Exists("Temp") = True Then endloc = ActiveDocument.Bookmarks("Temp").End ActiveDocument.Range(Start:=endloc, _ End:=endloc).InsertAfter "New text" _ 就是續(xù)行的意思

30、End If End Sub Exists 方法用于檢查是否存在名為 Temp 的書簽。如果找到該書簽,則用 End 屬性返回該書簽結(jié)束字符的位置。最后使用 Range 方法返回一個引用書簽結(jié)束位置的 Range 對象,以使用 InsertAfter 方法插入文字。有關(guān)定義 Range 對象的詳細信息,請參閱處理 Range 對象。 使用 With…End With 可使用 With…End With 結(jié)構(gòu)簡化引用相同對象的宏指令。例如,在文檔頂部添加標(biāo)題時,將錄制下面的宏。 Sub Macro1() Selection.HomeKey Unit:=wdStory

31、 Selection.TypeText Text:="Title" Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenter End Sub 每個指令都使用 Selection 屬性返回一個 Selection 對象??梢院喕@個宏,這樣只需使用一次 Selection 屬性。 Sub MyMacro() With Selection .HomeKey Unit:=wdStory .TypeText Text:="Title" .Paragrap

32、hAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End With End Sub 不使用 Selection 對象也可以完成相同的任務(wù)。下面的宏在活動文檔的開頭使用 Range 對象來完成相同的任務(wù)。 Sub MyMacro() With ActiveDocument.Range(Start:=0, End:=0) .

33、InsertAfter "Title" .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End With End Sub 刪除不必要的屬性 如果錄制了一個關(guān)于在對話框中選擇選項的宏,即使只更改一個或兩個選項,宏錄制器也會記錄該對話框中的所有選項的設(shè)置。如果不希望更改所有的選項,可從錄制的宏中刪除不必要的屬性。下面錄

34、制的宏包含“段落”對話框的一些選項(單擊“格式”菜單可顯示該對話框的所有信息)。 Sub Macro1() With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0) 左縮進0英寸 .RightIndent = InchesToPoints(0) 右縮進0英寸 .SpaceBefore = 6 段前距6磅 .SpaceAfter = 6 段后距6磅,下面不寫了! .LineSpacingRule = 0

35、 .Alignment = wdAlignParagraphLeft .WidowControl = True .KeepWithNext = False .KeepTogether = False .PageBreakBefore = False .NoLineNumber = False .Hyphenation = True .FirstLineIndent = InchesToPoints(0) .OutlineLevel = 10

36、 End With End Sub 但是,如果只需更改段前和段后間距,可將宏更改為: Sub MyMacro() With Selection.ParagraphFormat .SpaceBefore = 6 .SpaceAfter = 6 End With End Sub 因為只設(shè)置了較少的屬性,所以簡化后的宏運行得更快。運行結(jié)果只更改選定段落的段前和段后的間距,所有其他設(shè)置都沒有改變。(注意:如果你是一個喜歡亂動的人,還是要上面吧,但他的速度肯定沒有下面的快,但他的適合環(huán)境更大.更所謂"忠""孝"難兩全啊^-^) 刪除不必

37、要的參數(shù) 當(dāng)宏錄制器記錄一個方法時,會包含所有參數(shù)的值。打開名為 Test.doc 的文檔時,錄制了下面的宏。所得到的宏包含 Open 方法的所有參數(shù)。 Sub Macro1() Documents.Open FileName:="C:\My Documents\Test.doc", _ ConfirmConversions:= False, ReadOnly:=False, _ AddToRecentFiles:=False, PasswordDocument:="", _ PasswordTemplate:="", Rev

38、ert:=False, _ WritePasswordDocument:="", _ WritePasswordTemplate:="", Format:=wdOpenFormatAuto End Sub 可以從錄制的宏中刪除不需要的參數(shù)。例如,可以刪除所有設(shè)置為空字符串的參數(shù)(如 WritePasswordDocument:=""),如下所示。 Sub MyMacro() Documents.Open FileName:="C:\My Documents\Test.doc", _ ConfirmConversions:=

39、False, _ ReadOnly:=False, AddToRecentFiles:=False, _ Revert:=False, Format:=wdOpenFormatAuto End Sub 三、自動運行的宏 通過為一個宏賦予某個特殊的名稱,就可在執(zhí)行某項操作(例如啟動 Word 或打開文檔)時自動運行宏。Word 將下列名稱識別為自動宏,或稱“auto”宏。 宏名 運行條件 AutoExec 啟動 Word 或加載全局模板時 AutoNew 每次新建文檔時 AutoOpen 每次打開已有文檔時 AutoClose 每次關(guān)

40、閉文檔時 AutoExit 退出 Word 或卸載全局模板時 當(dāng)以下條件之一為真時,將識別代碼模塊中的自動宏。 模塊在自動宏(如 AutoExec)之后命名,并且包含一個名為“Main”的過程。 任何模塊中的過程在自動宏之后命名。 與其他宏一樣,自動宏也可以保存于 Normal 模板、其他模板或文檔中。要讓自動宏運行,它必須位于活動文檔的 Normal 模板中,或活動文檔選用的模板中。 唯一例外的是 AutoExec 宏,它只有存儲于以下位置時才可自動運行:Normal 模板、通過“模板和加載項”對話框全局加載的模板、或由“Startup”文件夾指定的文件夾中的全局模板。

41、 在命名沖突的情況下(多個自動宏名相同),Word 將運行上下文中最近的自動宏。例如,如果同時在文檔及其附加的模板中創(chuàng)建了 AutoClose 宏,則僅執(zhí)行文檔中的自動宏。如果在 Normal 模板中創(chuàng)建了 AutoNew 宏,只有當(dāng)文檔或其附加模板中沒有名為 AutoNew 的宏時,該自動宏才能運行。(筆者注:簡稱"就近原則"!) 注釋按住 Shift 可以終止自動宏的運行。例如,基于包含 AutoNew 宏的模板新建文檔時,按住 Shift 可終止 AutoNew 宏的運行。方法是:按住 Shift,單擊(“文件”菜單)“新建”對話框中的“確定”按鈕,并在顯示新文檔前持續(xù)按住 Shif

42、t。如果運行一個宏時有可能觸發(fā)自動宏,(這種情況,我沒遇過!)可用下列指令終止自動宏的運行: WordBasic.DisableAutoMacros 四、修改 Word 命令 大多數(shù) Word 命令都可通過轉(zhuǎn)換為宏的方式對其進行修改。例如,可修改“文件”菜單上的“打開”命令,使其不再顯示 Word 文檔文件列表(擴展名為 .doc 的文件),而顯示當(dāng)前文件夾中的所有文件。 若要在“宏”對話框中顯示內(nèi)置 Word 命令列表,可在“宏的位置”框中選定“Word 命令”。顯示的命令列表中包含所有的菜單命令、工具欄命令或快捷鍵命令。菜單命令名稱以相關(guān)的菜單名稱開頭。例如,“文件”菜單中的“保存

43、”命令顯示為“FileSave”。 方法是工具/宏/宏 通過將一個宏命名為與 Word 命令相同的名稱,就可用宏替代 Word 命令。例如,如果創(chuàng)建一個名為“FileSave”的宏,當(dāng)選擇“文件”菜單上的“保存”命令、單擊“保存”工具欄按鈕,或按“保存文件”快捷鍵時,Word 將運行該宏。 本示例介紹了修改 FileSave 命令的步驟。 1. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 2. 在“宏的位置”框中,選擇“Word 命令”。 3. 在“宏名”框中,選擇“FileSave”。 4. 在“宏的位置”框中選擇一個模板或文檔以保存該宏。例如,選擇 Normal

44、.dot(全局模板)可生成一個共用宏(即修改所有文檔的“FileSave”命令)。 5. 單擊“創(chuàng)建”按鈕。 FileSave 宏顯示如下: Sub FileSave() FileSave Macro Saves the active document or template ActiveDocument.Save End Sub 可添加指令或刪除現(xiàn)有的 ActiveDocument.Save 指令。之后在運行“FileSave”命令時,新的 FileSave 宏將取代 word 命令。若要恢復(fù)“FileSave”原有的功能,需重新命名新的 FileSav

45、e 宏或?qū)⒅畡h除。 說明: 也可以創(chuàng)建與 Word 命令同名的代碼模塊(例如 FileSave)并包含名為 Main 的子程序,以此替換 Word 命令。 五、將文本插入文檔 使用 InsertAfter 或 InsertBefore 方法在 Selection 或 Range 對象之前或之后插入文字。下列示例在活動文檔的末尾插入文字。 Sub InsertTextAtEndOfDocument() ActiveDocument.Content.InsertAfter Text:=" The end." End Sub 下列示例在所選內(nèi)容之前插入文字。 Sub AddT

46、extBeforeSelection() Selection.InsertBefore Text:="new text " End Sub Range 對象或 Selection 對象在使用了 InsertBefore 或 InsertAfter 方法之后,會擴展并包含新的文本。使用 Collapse 方法可以將 Selection 或 Range 折疊到開始或結(jié)束位置。 六、選定文檔中的文本 可使用 Select 方法選定文檔中的對象。Select 方法可用于多種對象,例如 Bookmark、Field、Range 和 Table 對象。下列示例選定活動文檔中的第一個表格。

47、 Sub SelectTable() ActiveDocument.Tables(1).Select End Sub 下列示例選定活動文檔中的第一個域。 Sub SelectField() ActiveDocument.Fields(1).Select End Sub 下列示例選定活動文檔中的前四個段落。Range 方法用于創(chuàng)建一個引用前四個段落的 Range 對象,然后將 Select 方法應(yīng)用于 Range 對象。 Sub SelectRange() Dim rngParagraphs As Range Set rngParagraph

48、s = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) rngParagraphs.Select End Sub 選定文檔中的文本:我覺得用處不大,原因就是為什么要選中呢?能操作就直接操作,不能的話,就選中吧(他可以說是沒辦法的辦法). 七、編輯文字 本主題包含與下列任務(wù)相關(guān)的 Visual Basic 示例: 確定文本是否被選定 折疊選定內(nèi)

49、容或區(qū)域 擴展選定內(nèi)容或區(qū)域 重新定義 Range 對象 更改文本 有關(guān)其他編輯任務(wù)的信息和示例,請參閱下列主題: 從文檔返回文本 選定文檔中的文本 將文本插入文檔 修改文檔的某一部分 確定文本是否被選定 Selection 對象的 Type 屬性返回所選內(nèi)容類型的信息。 如果所選內(nèi)容為插入點,則下列示例顯示一條消息"Nothing is Selected"。沒選中任何問題 Sub IsTextSelected() If Selection.Type = wdSelectionIP Then MsgBox "Nothing is sele

50、cted" End Sub 折疊所選內(nèi)容或區(qū)域 使用 Collapse 方法可將 Selection 或 Range 對象折疊到開始或結(jié)束點的位置。下列示例在所選內(nèi)容的開頭將所選內(nèi)容折疊為一個插入點。 Sub CollapseToBeginning() Selection.Collapse Direction:=wdCollapseStart Selection.Collapse Direction:=wdCollapseEnd End Sub 這個是標(biāo)準(zhǔn)的折疊的程序,以后可能會用到的噢! 下列示例將區(qū)域折疊至其結(jié)束點(在第一個單詞之后),并添加新文本。 Sub Col

51、lapseToEnd() Dim rngWords As Range Set rngWords = ActiveDocument.Words(1) 設(shè)置第一個單詞為區(qū)域rngWords With rngWords .Collapse Direction:=wdCollapseEnd 折疊到最后,區(qū)域與可以折疊的噢! .Text = "(This is a test.) " 在折疊的最后加入這些文字 End With End Sub 擴展所選內(nèi)容或區(qū)域 下列示例使用 MoveEnd 方法擴展所選內(nèi)容的結(jié)尾

52、以包含三個附加的單詞(總共是4個!)。MoveLeft、MoveRight、MoveUp 和 MoveDown 方法也可以用于擴展 Selection 對象。 Sub ExtendSelection() Selection.MoveEnd Unit:=wdWord, Count:=3 End Sub 下列示例使用 MoveEnd 方法擴展區(qū)域,以包含活動文檔中的前三個段落。 Sub ExtendRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Paragraphs(1

53、).Range rngParagraphs.MoveEnd Unit:=wdParagraph, Count:=2 End Sub 重新定義 Range 對象 使用 SetRange 方法可重新定義現(xiàn)有的 Range 對象。 更改文字 通過更改某一區(qū)域中的內(nèi)容可更改現(xiàn)有的文字。下列指令通過將 Text 屬性設(shè)為“The”來更改活動文檔中的第一個單詞。 Sub ChangeText() ActiveDocument.Words(1).Text = "The " End Sub 也可以使用 Delete 方法刪除現(xiàn)有文本,然后使用 InsertAfter 或 I

54、nsertBefore 方法插入新文本。下列示例刪除活動文檔的第一段,并插入新文本。 Sub DeleteText() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range With rngFirstParagraph .Delete .InsertAfter Text:="New text" .InsertParagraphAfter End With End Sub

55、上面的這個例子我們通常不用,我們更喜歡用下面 Sub DeleteText1() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range rngFirstParagraph.Text = "New text" & Chr(13) End Sub 八、將格式應(yīng)用于文本 本主題包含與下列任務(wù)相關(guān)的 Visual Basic 示例: 將格式應(yīng)用于選定內(nèi)容 將格式應(yīng)用于某一區(qū)域 插入文本并應(yīng)用字符和段落格式 在

56、12 磅和無之間切換段前間距 切換加粗格式 將左邊距增加 0.5 英寸 將格式應(yīng)用于選定內(nèi)容 下列示例使用 Selection 屬性將字符和段落格式應(yīng)用于選定文本。使用 Font 屬性獲得字體格式的屬性和方法,使用 ParagraphFormat 屬性獲得段落格式的屬性和方法。 Sub FormatSelection() With Selection.Font .Name = "Times New Roman" .Size = 14 .AllCaps = True 全部大寫 End With

57、 With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0.5) 左縮進0.5英寸 .Space1 這是單倍行距的縮寫 End With End Sub 將格式應(yīng)用于某一區(qū)域 下列示例定義了一個 Range 對象,它引用了活動文檔的前三個段落。通過應(yīng)用 Font 和 ParagraphFormat 對象的屬性來設(shè)置 Range 對象的格式。 Sub FormatRange() Dim rngFormat As Range Set rngForm

58、at = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End) With rngFormat .Font.Name = "Arial" .ParagraphFormat.Alignment = wdAlignParagraphJustify 兩端對齊 End With End Sub 插入文字并應(yīng)用字符和段落格式

59、 下列示例在當(dāng)前文檔的上部添加單詞 Title。第一段居中對齊,并在該段落之后添加半英寸的間距。將單詞 Title 的格式設(shè)為 24 磅 Arial 字體。 Sub InsertFormatText() Dim rngFormat As Range Set rngFormat = ActiveDocument.Range(Start:=0, End:=0) With rngFormat .InsertAfter Text:="Title" .InsertParagraphAfter 插入段落標(biāo)記 Wi

60、th .Font .Name = "Tahoma" .Size = 24 .Bold = True End With End With With ActiveDocument.Paragraphs(1) .Alignment = wdAlignParagraphCenter .SpaceAfter = InchesToPoints(0.5) End With End Sub 在 12 磅和無之間切換段前間距 下列示例切換選定內(nèi)容

61、中第一段的段前間距。宏將獲取當(dāng)前段前間距的值,如果該值為 12 磅,則刪除段前間距格式(將 SpaceBefore 屬性設(shè)為零)。如果段前間距的值為除 12 外的其他數(shù)值,則將 SpaceBefore 屬性設(shè)為 12 磅。 Sub ToggleParagraphSpace() With Selection.Paragraphs(1) If .SpaceBefore <> 0 Then .SpaceBefore = 0 Else .SpaceBefore = 6 End If

62、 End With End Sub 切換加粗格式 下列示例切換選定文本的加粗格式。 Sub ToggleBold() Selection.Font.Bold = wdToggle End Sub 將左邊距增加 0.5 英寸 下列示例將左邊距和右邊距增加 0.5 英寸。PageSetup 對象包含文檔的所有的頁面設(shè)置屬性(左邊距、下邊距、紙張大小等)。LeftMargin 屬性用于返回和設(shè)置左邊距設(shè)置。RightMargin 屬性用于返回和設(shè)置右邊距設(shè)置。 Sub FormatMargins() With ActiveDocument.PageSetup

63、 .LeftMargin = .LeftMargin + InchesToPoints(0.5) .RightMargin = .RightMargin + InchesToPoints(0.5) End With End Sub 九、查找并替換文字或格式 通過 Find 和 Replacement 對象可實現(xiàn)查找和替換功能。Selection 和 Range 對象可以使用 Find 對象。從 Selection 或 Range 對象訪問 Find 對象時,查找操作會略有不同。 查找并選定文字 如果從 Selection 對象訪問 Fin

64、d 對象,當(dāng)找到搜索條件時,就會更改所選內(nèi)容。下列示例選定下一個出現(xiàn)的“Hello”。如果到達文檔結(jié)尾時仍未找到“Hello”,則停止搜索。 With Selection.Find .Forward = True .Wrap = wdFindStop .Text = "Hello" .Execute End With Find 對象包含與“查找和替換”對話框中的選項相關(guān)的屬性(在“編輯”菜單上選擇“查找”可顯示該對話框)??梢栽O(shè)置 Find 對象單獨的屬性或使用 Execute 方法的參數(shù),如下例所示。 Selection.Find.Execut

65、e FindText:="Hello", _ Forward:=True, Wrap:=wdFindStop 查找文字,但不更改所選內(nèi)容 如果從 Range 對象訪問 Find 對象,則找到搜索條件時,不更改所選內(nèi)容,但是會重新定義 Range 對象。下列示例在活動文檔中查找第一個出現(xiàn)的“blue”。如果找到該單詞,則重新定義該區(qū)域,并將加粗格式應(yīng)用于單詞“blue”。 With ActiveDocument.Content.Find .Text = "blue" .Forward = True .Execute If .Found =

66、True Then .Parent.Bold = True End With 下列示例使用 Execute 方法的參數(shù),執(zhí)行結(jié)果與上例相同。 Set myRange = ActiveDocument.Content myRange.Find.Execute FindText:="blue", Forward:=True If myRange.Find.Found = True Then myRange.Bold = True 使用 Replacement 對象 Replacement 對象代表查找和替換操作的替換條件。Replacement 對象的屬性和方法對應(yīng)于“查找和替換”對話框中的選項(單擊“編輯”菜單中的“查找”或“替換”命令可顯示該對話框)。 可通過 Find 對象使用 Replacement 對象。下列示例將所有單詞“hi”替換為“hello”。由于 Find 對象是通過 Selection 對象訪問的,所以當(dāng)找到搜索條件時,會更改所選內(nèi)容。 Wi

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!