




已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Word VBA 學(xué)習(xí)交流資料之二感想:有感于國(guó)人的Word水平比較低,尤其是VBA這一塊,本人想請(qǐng)大家一起學(xué)習(xí)VBA,在提高自身的能力同時(shí)幫助需要幫助的人。感謝:綠葉的建群之功,也感謝you兄的熱烈支持,更感謝大家的大力支持!學(xué)前必備:Word VBA幫助(2003或別的都行,大體相當(dāng))(沒(méi)有也沒(méi)有關(guān)系,在這里,大多看到的就是復(fù)制自“幫助”的。)可選工具:金山詞霸(對(duì)E文不太懂的人,尤其重要)語(yǔ)法工具:共享區(qū)的“VBA一串通”學(xué)習(xí)方法:“不求甚解”(一開(kāi)始,不太懂,沒(méi)關(guān)系,堅(jiān)持下去就懂了。)學(xué)習(xí)步驟:看到例子時(shí),復(fù)制到VBE編輯器中運(yùn)行一次,看一下結(jié)果(最好按F8,一步一步地看)必要指出:是“互學(xué)”,錯(cuò)誤或不妥之處難免!因我也是一邊看幫助,一邊寫(xiě)。開(kāi)始之前:高唱國(guó)歌(最好能喊:自強(qiáng)不息?。㏒tart:一、通過(guò)錄制宏生成代碼如果無(wú)法確定要使用的 Visual Basic 方法或?qū)傩?,可打開(kāi)宏錄制器并進(jìn)行手動(dòng)操作。宏錄制器會(huì)將操作譯成 Visual Basic 代碼。錄制操作完成后,可根據(jù)需要修改代碼。例如,如果無(wú)法確定實(shí)現(xiàn)段落縮進(jìn)的屬性或方法,可執(zhí)行下列操作:1. 在“工具”菜單上,指向“宏”,然后單擊“錄制新宏”。 2. 如果需要,可更改默認(rèn)的宏名稱(chēng),然后單擊“確定”啟動(dòng)錄制器。 3. 在“格式”菜單上,選定“段落”。 4. 更改段落左縮進(jìn)的值,然后單擊“確定”。 5. 單擊“停止錄制”工具欄上的“停止錄制”按鈕。 6. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 7. 從步驟 2 中選擇宏的名稱(chēng),然后單擊“編輯”按鈕。 查看 Visual Basic 代碼來(lái)確定對(duì)應(yīng)于段落左縮進(jìn)的屬性(LeftIndent 屬性)。將插入點(diǎn)置于 LeftIndent 之中,并按 F1 或單擊“幫助”按鈕。在幫助主題中,可以查看示例以及支持 LeftIndent 屬性的對(duì)象(單擊“應(yīng)用于”)。(從上面可以看出,錄制宏是我們認(rèn)識(shí)未知對(duì)象的很好方法之一,同時(shí),也知道我為什么要大家裝“金山詞霸”的原因!如果你這個(gè)單詞不認(rèn)識(shí),你怎么知道他是“左縮進(jìn)”?當(dāng)然,也有方法:就是把這個(gè)值設(shè)為一個(gè)比較特殊的值,再打特殊值所對(duì)應(yīng)的屬性)說(shuō)明錄制的宏使用 Selection 屬性返回 Selection 對(duì)象。例如,下列指令將所選段落縮進(jìn) 0.5 英寸。Sub IndentParagraph() Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5)End Sub您也可以修改錄制的宏并與 Range 對(duì)象一起使用。(我們?cè)谌粘5氖褂弥薪?jīng)常注意到:在使用“本機(jī)上的模板”是的向?qū)Ь痛罅渴褂昧薙election對(duì)象,而不是Range對(duì)象!難道說(shuō)微軟有更新層次的考慮?我想可能是Selection對(duì)象更穩(wěn)定,跨版本能力更強(qiáng)吧!)二、修改錄制的 Visual Basic 宏宏錄制器是查找所需的 Visual Basic 方法和屬性的非常方便的工具。如果不知道使用何種屬性或方法,可打開(kāi)宏錄制器,手動(dòng)執(zhí)行操作。宏錄制器會(huì)將操作譯為 Visual Basic 代碼。但錄制宏具有一些限制條件。您不能錄制下列內(nèi)容:條件分支 變量指定 循環(huán)結(jié)構(gòu) 自定義用戶窗體 出錯(cuò)處理 用鼠標(biāo)選定的文字(必須使用組合鍵) 若要增強(qiáng)宏的功能,可能需要修改錄制到模塊中的代碼。刪除 Selection 屬性使用宏錄制器創(chuàng)建的宏取決于所選內(nèi)容。在大多數(shù)錄制的宏指令的開(kāi)頭,可以看到“Selection”。錄制的宏使用 Selection 屬性返回 Selection 對(duì)象。例如,下列示例將所選內(nèi)容移動(dòng)至 Temp 書(shū)簽,并在書(shū)簽之后插入文字。Sub Macro1() Selection.Goto What:=wdGotoBookmark, Name:=Temp Selection.MoveRight Unit:=wdCharacter, Count:=1 相當(dāng)于選中后按一個(gè)鍵盤(pán)的右方向鍵 Selection.TypeText Text:=New textEnd Sub這個(gè)宏雖然可以完成任務(wù),但是有一些缺點(diǎn)。首先,如果文檔中沒(méi)有一個(gè)名為 Temp 的書(shū)簽,該宏將導(dǎo)致出錯(cuò)。其次,該宏可能不正確地移動(dòng)所選內(nèi)容。修改這個(gè)宏,使其不再使用 Selection 對(duì)象,就可解決上述兩個(gè)問(wèn)題。以下就是經(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ù)行的意思End IfEnd SubExists 方法用于檢查是否存在名為 Temp 的書(shū)簽。如果找到該書(shū)簽,則用 End 屬性返回該書(shū)簽結(jié)束字符的位置。最后使用 Range 方法返回一個(gè)引用書(shū)簽結(jié)束位置的 Range 對(duì)象,以使用 InsertAfter 方法插入文字。有關(guān)定義 Range 對(duì)象的詳細(xì)信息,請(qǐng)參閱處理 Range 對(duì)象。使用 WithEnd With可使用 WithEnd With 結(jié)構(gòu)簡(jiǎn)化引用相同對(duì)象的宏指令。例如,在文檔頂部添加標(biāo)題時(shí),將錄制下面的宏。Sub Macro1() Selection.HomeKey Unit:=wdStory Selection.TypeText Text:=Title Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenterEnd Sub每個(gè)指令都使用 Selection 屬性返回一個(gè) Selection 對(duì)象??梢院?jiǎn)化這個(gè)宏,這樣只需使用一次 Selection 屬性。Sub MyMacro() With Selection .HomeKey Unit:=wdStory .TypeText Text:=Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒(méi)看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub不使用 Selection 對(duì)象也可以完成相同的任務(wù)。下面的宏在活動(dòng)文檔的開(kāi)頭使用 Range 對(duì)象來(lái)完成相同的任務(wù)。Sub MyMacro() With ActiveDocument.Range(Start:=0, End:=0) .InsertAfter Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒(méi)看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub刪除不必要的屬性如果錄制了一個(gè)關(guān)于在對(duì)話框中選擇選項(xiàng)的宏,即使只更改一個(gè)或兩個(gè)選項(xiàng),宏錄制器也會(huì)記錄該對(duì)話框中的所有選項(xiàng)的設(shè)置。如果不希望更改所有的選項(xiàng),可從錄制的宏中刪除不必要的屬性。下面錄制的宏包含“段落”對(duì)話框的一些選項(xiàng)(單擊“格式”菜單可顯示該對(duì)話框的所有信息)。Sub Macro1() With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0) 左縮進(jìn)0英寸 .RightIndent = InchesToPoints(0) 右縮進(jìn)0英寸 .SpaceBefore = 6 段前距6磅 .SpaceAfter = 6 段后距6磅,下面不寫(xiě)了! .LineSpacingRule = 0 .Alignment = wdAlignParagraphLeft .WidowControl = True .KeepWithNext = False .KeepTogether = False .PageBreakBefore = False .NoLineNumber = False .Hyphenation = True .FirstLineIndent = InchesToPoints(0) .OutlineLevel = 10 End WithEnd Sub但是,如果只需更改段前和段后間距,可將宏更改為:Sub MyMacro() With Selection.ParagraphFormat .SpaceBefore = 6 .SpaceAfter = 6 End WithEnd Sub因?yàn)橹辉O(shè)置了較少的屬性,所以簡(jiǎn)化后的宏運(yùn)行得更快。運(yùn)行結(jié)果只更改選定段落的段前和段后的間距,所有其他設(shè)置都沒(méi)有改變。(注意:如果你是一個(gè)喜歡亂動(dòng)的人,還是要上面吧,但他的速度肯定沒(méi)有下面的快,但他的適合環(huán)境更大.更所謂忠孝難兩全啊-)刪除不必要的參數(shù)當(dāng)宏錄制器記錄一個(gè)方法時(shí),會(huì)包含所有參數(shù)的值。打開(kāi)名為 Test.doc 的文檔時(shí),錄制了下面的宏。所得到的宏包含 Open 方法的所有參數(shù)。Sub Macro1() Documents.Open FileName:=C:My DocumentsTest.doc, _ ConfirmConversions:= False, ReadOnly:=False, _ AddToRecentFiles:=False, PasswordDocument:=, _ PasswordTemplate:=, Revert:=False, _ WritePasswordDocument:=, _ WritePasswordTemplate:=, Format:=wdOpenFormatAutoEnd Sub可以從錄制的宏中刪除不需要的參數(shù)。例如,可以刪除所有設(shè)置為空字符串的參數(shù)(如 WritePasswordDocument:=),如下所示。Sub MyMacro() Documents.Open FileName:=C:My DocumentsTest.doc, _ ConfirmConversions:= False, _ ReadOnly:=False, AddToRecentFiles:=False, _ Revert:=False, Format:=wdOpenFormatAutoEnd Sub三、自動(dòng)運(yùn)行的宏通過(guò)為一個(gè)宏賦予某個(gè)特殊的名稱(chēng),就可在執(zhí)行某項(xiàng)操作(例如啟動(dòng) Word 或打開(kāi)文檔)時(shí)自動(dòng)運(yùn)行宏。Word 將下列名稱(chēng)識(shí)別為自動(dòng)宏,或稱(chēng)“auto”宏。宏名運(yùn)行條件AutoExec啟動(dòng) Word 或加載全局模板時(shí)AutoNew每次新建文檔時(shí)AutoOpen每次打開(kāi)已有文檔時(shí)AutoClose每次關(guān)閉文檔時(shí)AutoExit退出 Word 或卸載全局模板時(shí)當(dāng)以下條件之一為真時(shí),將識(shí)別代碼模塊中的自動(dòng)宏。 模塊在自動(dòng)宏(如 AutoExec)之后命名,并且包含一個(gè)名為“Main”的過(guò)程。 任何模塊中的過(guò)程在自動(dòng)宏之后命名。 與其他宏一樣,自動(dòng)宏也可以保存于 Normal 模板、其他模板或文檔中。要讓自動(dòng)宏運(yùn)行,它必須位于活動(dòng)文檔的 Normal 模板中,或活動(dòng)文檔選用的模板中。唯一例外的是 AutoExec 宏,它只有存儲(chǔ)于以下位置時(shí)才可自動(dòng)運(yùn)行:Normal 模板、通過(guò)“模板和加載項(xiàng)”對(duì)話框全局加載的模板、或由“Startup”文件夾指定的文件夾中的全局模板。在命名沖突的情況下(多個(gè)自動(dòng)宏名相同),Word 將運(yùn)行上下文中最近的自動(dòng)宏。例如,如果同時(shí)在文檔及其附加的模板中創(chuàng)建了 AutoClose 宏,則僅執(zhí)行文檔中的自動(dòng)宏。如果在 Normal 模板中創(chuàng)建了 AutoNew 宏,只有當(dāng)文檔或其附加模板中沒(méi)有名為 AutoNew 的宏時(shí),該自動(dòng)宏才能運(yùn)行。(筆者注:簡(jiǎn)稱(chēng)就近原則!)注釋按住 Shift 可以終止自動(dòng)宏的運(yùn)行。例如,基于包含 AutoNew 宏的模板新建文檔時(shí),按住 Shift 可終止 AutoNew 宏的運(yùn)行。方法是:按住 Shift,單擊(“文件”菜單)“新建”對(duì)話框中的“確定”按鈕,并在顯示新文檔前持續(xù)按住 Shift。如果運(yùn)行一個(gè)宏時(shí)有可能觸發(fā)自動(dòng)宏,(這種情況,我沒(méi)遇過(guò)!)可用下列指令終止自動(dòng)宏的運(yùn)行:WordBasic.DisableAutoMacros四、修改 Word 命令大多數(shù) Word 命令都可通過(guò)轉(zhuǎn)換為宏的方式對(duì)其進(jìn)行修改。例如,可修改“文件”菜單上的“打開(kāi)”命令,使其不再顯示 Word 文檔文件列表(擴(kuò)展名為 .doc 的文件),而顯示當(dāng)前文件夾中的所有文件。若要在“宏”對(duì)話框中顯示內(nèi)置 Word 命令列表,可在“宏的位置”框中選定“Word 命令”。顯示的命令列表中包含所有的菜單命令、工具欄命令或快捷鍵命令。菜單命令名稱(chēng)以相關(guān)的菜單名稱(chēng)開(kāi)頭。例如,“文件”菜單中的“保存”命令顯示為“FileSave”。方法是工具/宏/宏通過(guò)將一個(gè)宏命名為與 Word 命令相同的名稱(chēng),就可用宏替代 Word 命令。例如,如果創(chuàng)建一個(gè)名為“FileSave”的宏,當(dāng)選擇“文件”菜單上的“保存”命令、單擊“保存”工具欄按鈕,或按“保存文件”快捷鍵時(shí),Word 將運(yùn)行該宏。本示例介紹了修改 FileSave 命令的步驟。1. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 2. 在“宏的位置”框中,選擇“Word 命令”。 3. 在“宏名”框中,選擇“FileSave”。 4. 在“宏的位置”框中選擇一個(gè)模板或文檔以保存該宏。例如,選擇 Normal.dot(全局模板)可生成一個(gè)共用宏(即修改所有文檔的“FileSave”命令)。5. 單擊“創(chuàng)建”按鈕。 FileSave 宏顯示如下:Sub FileSave() FileSave Macro Saves the active document or template ActiveDocument.SaveEnd Sub可添加指令或刪除現(xiàn)有的 ActiveDocument.Save 指令。之后在運(yùn)行“FileSave”命令時(shí),新的 FileSave 宏將取代 word 命令。若要恢復(fù)“FileSave”原有的功能,需重新命名新的 FileSave 宏或?qū)⒅畡h除。說(shuō)明: 也可以創(chuàng)建與 Word 命令同名的代碼模塊(例如 FileSave)并包含名為 Main 的子程序,以此替換 Word 命令。五、將文本插入文檔使用 InsertAfter 或 InsertBefore 方法在 Selection 或 Range 對(duì)象之前或之后插入文字。下列示例在活動(dòng)文檔的末尾插入文字。Sub InsertTextAtEndOfDocument() ActiveDocument.Content.InsertAfter Text:= The end.End Sub下列示例在所選內(nèi)容之前插入文字。Sub AddTextBeforeSelection() Selection.InsertBefore Text:=new text End SubRange 對(duì)象或 Selection 對(duì)象在使用了 InsertBefore 或 InsertAfter 方法之后,會(huì)擴(kuò)展并包含新的文本。使用 Collapse 方法可以將 Selection 或 Range 折疊到開(kāi)始或結(jié)束位置。六、選定文檔中的文本可使用 Select 方法選定文檔中的對(duì)象。Select 方法可用于多種對(duì)象,例如 Bookmark、Field、Range 和 Table 對(duì)象。下列示例選定活動(dòng)文檔中的第一個(gè)表格。Sub SelectTable() ActiveDocument.Tables(1).SelectEnd Sub下列示例選定活動(dòng)文檔中的第一個(gè)域。Sub SelectField() ActiveDocument.Fields(1).SelectEnd Sub下列示例選定活動(dòng)文檔中的前四個(gè)段落。Range 方法用于創(chuàng)建一個(gè)引用前四個(gè)段落的 Range 對(duì)象,然后將 Select 方法應(yīng)用于 Range 對(duì)象。Sub SelectRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) rngParagraphs.SelectEnd Sub選定文檔中的文本:我覺(jué)得用處不大,原因就是為什么要選中呢?能操作就直接操作,不能的話,就選中吧(他可以說(shuō)是沒(méi)辦法的辦法).七、編輯文字本主題包含與下列任務(wù)相關(guān)的 Visual Basic 示例: 確定文本是否被選定 折疊選定內(nèi)容或區(qū)域 擴(kuò)展選定內(nèi)容或區(qū)域 重新定義 Range 對(duì)象 更改文本 有關(guān)其他編輯任務(wù)的信息和示例,請(qǐng)參閱下列主題:從文檔返回文本 選定文檔中的文本 將文本插入文檔 修改文檔的某一部分 確定文本是否被選定Selection 對(duì)象的 Type 屬性返回所選內(nèi)容類(lèi)型的信息。如果所選內(nèi)容為插入點(diǎn),則下列示例顯示一條消息Nothing is Selected。沒(méi)選中任何問(wèn)題Sub IsTextSelected() If Selection.Type = wdSelectionIP Then MsgBox Nothing is selectedEnd Sub折疊所選內(nèi)容或區(qū)域使用 Collapse 方法可將 Selection 或 Range 對(duì)象折疊到開(kāi)始或結(jié)束點(diǎn)的位置。下列示例在所選內(nèi)容的開(kāi)頭將所選內(nèi)容折疊為一個(gè)插入點(diǎn)。Sub CollapseToBeginning()Selection.Collapse Direction:=wdCollapseStartSelection.Collapse Direction:=wdCollapseEndEnd Sub這個(gè)是標(biāo)準(zhǔn)的折疊的程序,以后可能會(huì)用到的噢!下列示例將區(qū)域折疊至其結(jié)束點(diǎn)(在第一個(gè)單詞之后),并添加新文本。Sub CollapseToEnd() Dim rngWords As Range Set rngWords = ActiveDocument.Words(1) 設(shè)置第一個(gè)單詞為區(qū)域rngWords With rngWords .Collapse Direction:=wdCollapseEnd 折疊到最后,區(qū)域與可以折疊的噢! .Text = (This is a test.) 在折疊的最后加入這些文字 End WithEnd Sub擴(kuò)展所選內(nèi)容或區(qū)域下列示例使用 MoveEnd 方法擴(kuò)展所選內(nèi)容的結(jié)尾以包含三個(gè)附加的單詞(總共是4個(gè)!)。MoveLeft、MoveRight、MoveUp 和 MoveDown 方法也可以用于擴(kuò)展 Selection 對(duì)象。Sub ExtendSelection() Selection.MoveEnd Unit:=wdWord, Count:=3End Sub下列示例使用 MoveEnd 方法擴(kuò)展區(qū)域,以包含活動(dòng)文檔中的前三個(gè)段落。Sub ExtendRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Paragraphs(1).Range rngParagraphs.MoveEnd Unit:=wdParagraph, Count:=2End Sub重新定義 Range 對(duì)象使用 SetRange 方法可重新定義現(xiàn)有的 Range 對(duì)象。更改文字通過(guò)更改某一區(qū)域中的內(nèi)容可更改現(xiàn)有的文字。下列指令通過(guò)將 Text 屬性設(shè)為“The”來(lái)更改活動(dòng)文檔中的第一個(gè)單詞。Sub ChangeText() ActiveDocument.Words(1).Text = The End Sub也可以使用 Delete 方法刪除現(xiàn)有文本,然后使用 InsertAfter 或 InsertBefore 方法插入新文本。下列示例刪除活動(dòng)文檔的第一段,并插入新文本。Sub DeleteText() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range With rngFirstParagraph .Delete .InsertAfter Text:=New text .InsertParagraphAfter End WithEnd Sub上面的這個(gè)例子我們通常不用,我們更喜歡用下面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)用字符和段落格式 在 12 磅和無(wú)之間切換段前間距 切換加粗格式 將左邊距增加 0.5 英寸 將格式應(yīng)用于選定內(nèi)容下列示例使用 Selection 屬性將字符和段落格式應(yīng)用于選定文本。使用 Font 屬性獲得字體格式的屬性和方法,使用 ParagraphFormat 屬性獲得段落格式的屬性和方法。Sub FormatSelection() With Selection.Font .Name = Times New Roman .Size = 14 .AllCaps = True 全部大寫(xiě) End With With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0.5) 左縮進(jìn)0.5英寸 .Space1 這是單倍行距的縮寫(xiě) End WithEnd Sub將格式應(yīng)用于某一區(qū)域下列示例定義了一個(gè) Range 對(duì)象,它引用了活動(dòng)文檔的前三個(gè)段落。通過(guò)應(yīng)用 Font 和 ParagraphFormat 對(duì)象的屬性來(lái)設(shè)置 Range 對(duì)象的格式。Sub FormatRange() Dim rngFormat As Range Set rngFormat = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End) With rngFormat .Font.Name = Arial .ParagraphFormat.Alignment = wdAlignParagraphJustify 兩端對(duì)齊 End WithEnd Sub插入文字并應(yīng)用字符和段落格式下列示例在當(dāng)前文檔的上部添加單詞 Title。第一段居中對(duì)齊,并在該段落之后添加半英寸的間距。將單詞 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)記 With .Font .Name = Tahoma .Size = 24 .Bold = True End With End With With ActiveDocument.Paragraphs(1) .Alignment = wdAlignParagraphCenter .SpaceAfter = InchesToPoints(0.5) End WithEnd Sub在 12 磅和無(wú)之間切換段前間距下列示例切換選定內(nèi)容中第一段的段前間距。宏將獲取當(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 End WithEnd Sub切換加粗格式下列示例切換選定文本的加粗格式。Sub ToggleBold() Selection.Font.Bold = wdToggleEnd Sub將左邊距增加 0.5 英寸下列示例將左邊距和右邊距增加 0.5 英寸。PageSetup 對(duì)象包含文檔的所有的頁(yè)面設(shè)置屬性(左邊距、下邊距、紙張大小等)。LeftMargin 屬性用于返回和設(shè)置左邊距設(shè)置。RightMargin 屬性用于返回和設(shè)置右邊距設(shè)置。Sub FormatMargins() With ActiveDocument.PageSetup .LeftMargin = .LeftMargin + InchesToPoints(0.5) .RightMargin = .RightMargin + InchesToPoints(0.5) End WithEnd Sub九、查找并替換文字或格式通過(guò) Find 和 Replacement 對(duì)象可實(shí)現(xiàn)查找和替換功能。Selection 和 Range 對(duì)象可以使用 Find 對(duì)象。從 Selection 或 Range 對(duì)象訪問(wèn) Find 對(duì)象時(shí),查找操作會(huì)略有不同。查找并選定文字如果從 Selection 對(duì)象訪問(wèn) Find 對(duì)象,當(dāng)找到搜索條件時(shí),就會(huì)更改所選內(nèi)容。下列示例選定下一個(gè)出現(xiàn)的“Hello”。如果到達(dá)文檔結(jié)尾時(shí)仍未找到“Hello”,則停止搜索。With Selection.Find .Forward = True .Wrap = wdFindStop .Text = Hello .ExecuteEnd WithFind 對(duì)象包含與“查找和替換”對(duì)話框中的選項(xiàng)相關(guān)的屬性(在“編輯”菜單上選擇“查找”可顯示該對(duì)話框)。可以設(shè)置 Find 對(duì)象單獨(dú)的屬性或使用 Execute 方法的參數(shù),如下例所示。Selection.Find.Execute FindText:=Hello, _ Forward:=True, Wrap:=wdFindStop查找文字,但不更改所選內(nèi)容如果從 Range 對(duì)象訪問(wèn) Find 對(duì)象,則找到搜索條件時(shí),不更改所選內(nèi)容,但是會(huì)重新定義 Range 對(duì)象。下列示例在活動(dòng)文檔中查找第一個(gè)出現(xiàn)的“blue”。如果找到該單詞,則重新定義該區(qū)域,并將加粗格式應(yīng)用于單詞“blue”。With ActiveDocument.Content.Find .Text = blue .Forward = True .Execute If .Found = True Then .Parent.Bold = TrueEnd With下列示例使用 Execute 方法的參數(shù),執(zhí)行結(jié)果與上例相同。Set myRange = ActiveDocument.ContentmyRange.Find.Execute FindText:=blue, Forward:=TrueIf myRange.Find.Found = True Then myRange.Bold = True使用 Replacement 對(duì)象Replacement 對(duì)象代表查找和替換操作的替換條件。Replacement 對(duì)象的屬性和方法對(duì)應(yīng)于“查找和替換”對(duì)話框中的選項(xiàng)(單擊“編輯”菜單中的“查找”或“替換”命令可顯示該對(duì)話框)??赏ㄟ^(guò) Find 對(duì)象使用 Replacement 對(duì)象。下列示例將所有單詞“hi”替換為“hello”。由于 Find 對(duì)象是通過(guò) Selection 對(duì)象訪問(wèn)的,所以當(dāng)找到搜索條件時(shí),會(huì)更改所選內(nèi)容。With Selection.Find .ClearFormatting .Text = hi .Replacement.ClearFormatting .Replacement.Text = hello .Execute Replace:=wdReplaceAll, Forward:=True, _ Wrap:=wdFindContinueEnd With下列示例取消活動(dòng)文檔中的加粗格式。Find 對(duì)象的 Bold 屬性為 True,而 Replacement 對(duì)象的該屬性為 False。若要查找并替換格式,可將查找和替換文字設(shè)為空字符串 (),并將 Execute 方法的 Format 參數(shù)設(shè)為 True。由于從 Range 對(duì)象訪問(wèn) Find 對(duì)象,所選內(nèi)容將保持不變(Content 屬性返回一個(gè) Range 對(duì)象)。With ActiveDocument.Content.Find .ClearFormatting .Font.Bold = True With .Replacement .ClearFormatting .Font.Bold = False End With .Execute FindText:=, ReplaceWith:=, _ Format:=True, Replace:=wdReplaceAllEnd With上面的查找與替換是重點(diǎn)!他能解決很多的替換問(wèn)題。舉例:原地址是:/dispbbs.asp?boardID=23&ID=153805&page=1摘題目:怎樣用宏統(tǒng)計(jì)word文件中某一個(gè)漢字,例如“的”字出現(xiàn)的數(shù)量?(可以這樣:新建一個(gè)文檔,輸入“=rand(50,50)”,再按回車(chē)(不包括雙引號(hào)“”),則產(chǎn)生了虛擬文本,在此虛擬文本中試驗(yàn))方法有三:Sub getfoundcount1() Dim a As Range, i% Dim c, d c = Timer 設(shè)C為運(yùn)行前的時(shí)間 For Each a In ActiveDocument.Characters 在字符間循環(huán) If a Like 的 Then 如果是“的” i = i + 1 則加上,i的初始值是0,不用設(shè)的,默認(rèn) End If Next d = Timer c 用現(xiàn)在的時(shí)間減去運(yùn)行前的時(shí)間等于用時(shí) MsgBox Word 找到 & i & 個(gè)與此條件相匹配的項(xiàng)!, vbInformation, dEnd Sub上面此法利用循環(huán)比較字符是否是的是“的”字,來(lái)判斷!用時(shí)下面的圖形的標(biāo)題欄 圖表 1Sub GetFoundCount2() Dim FoundCount As Integer, myFindText As String Dim a, b a = Timer myFindText = 的 With ActiveDocument.Content.Find .Text = myFindText 要查找的字符 .MatchWildcards = False 通配符為不勾選 .Wrap = wdFindStop 當(dāng)查找到后停止,就是每次縮小范圍 Do While .Execute 當(dāng)查找時(shí)則累加 FoundCount = FoundCount + 1 Loop End With b = Timer - a Debug.Print b Debug.Print FoundCount MsgBox Word 找到 & FoundCount & 個(gè)與此條件相匹配的項(xiàng)!, vbInformation, bEnd Sub上面是標(biāo)準(zhǔn)的用查找來(lái)判斷累加,(也是老大的代碼)圖表 2Sub getfoundcount3()Dim a, b, c, d, e, f d = Timer a = ActiveDocument.Range.Text f = VBA.Asc(的) 取得“的”的Ascii碼 b = Split(a, Chr(f) 用此Ascii碼來(lái)分裂 c = UBound(b) 取得上限 e = Timer d 取得時(shí)間 Debug.Print e 這個(gè)是輸出到調(diào)試區(qū)的 Debug.Print c 這個(gè)也是 MsgBox Word 找到 & c & 個(gè)與此條件相匹配的項(xiàng)!, vbInformation, eEnd Sub上面是利用數(shù)組,把“的”看成是用于split數(shù)組的字符,通過(guò)是判斷數(shù)組的上限來(lái)判斷是幾位數(shù)組,即是幾個(gè)“的”。圖表 3Sub GetFoundCount4() Dim strText As String, myText As String Dim lngOld As Long, lngNew As Long Dim Times As Single Times = VBA.Timer strText = ActiveDocument.Content.Text myText = 的 lngOld = Len(strText) 包括“的”的長(zhǎng)度 lngNew = Len(Replace(strText, myText, ) 替換“的”后的長(zhǎng)度 MsgBox Word 找到 & lngOld - lngNew & 個(gè)與此條件相匹配的項(xiàng)!, vbInformation, VBA.Timer - TimesEnd Sub圖表 4(上面是老大又寫(xiě)了一個(gè),老大隨后的代碼的運(yùn)行速度更是十分驚人)兩種方法運(yùn)行最高。一個(gè)是0.1秒與一個(gè)是6秒,效率是可想而知!大家試試!十、從文檔返回文本使用 Text 屬性可以返回 Range 或 Selection 對(duì)象中的文本。下列示例選定下一個(gè)格式設(shè)為“標(biāo)題 1”樣式的段落。然后通過(guò) MsgBox 函數(shù)顯示 Text 屬性的內(nèi)容。Sub FindHeadingStyle() With Selection.Find .ClearFormatting .Style = wdStyleHeading1 .Execute FindText:=, Format:=True, _ Forward:=True, Wrap:=wdFindStop If .Found = True Then MsgBox Selection.Text End WithEnd Sub下列指令返回并顯示選定的文本。Sub ShowSelection() Dim strText As String strText = Selection.Text MsgBox strTextEnd Sub下列示例返回活動(dòng)文檔中的第一個(gè)單詞。Words 集合中的每一項(xiàng)是代表一個(gè)單詞的 Range 對(duì)象。Sub ShowFirstWord() Dim strFirstWord As String strFirstWord = ActiveDocument.Words(1).Text MsgBox strFirstWordEnd Sub下列示例返回與活動(dòng)文檔中第一個(gè)書(shū)簽相關(guān)聯(lián)的文本。Sub ShowFirstBookmark() Dim strBookmark As String If ActiveDocument.Bookmarks.Count 0 Then strBookmark = ActiveDocument.Bookmarks(1).Range.Text MsgBox strBookmark End IfEnd SubInputBox 函數(shù)在一對(duì)話框來(lái)中顯示提示,等待用戶輸入正文或按下按鈕,并返回包含文本框內(nèi)容的 String。語(yǔ)法InputBox(prompt, title , default , xpos , ypos , helpfile, context) InputBox 函數(shù)的語(yǔ)法具有以下幾個(gè)命名參數(shù):部分描述Prompt必需的。作為對(duì)話框消息出現(xiàn)的字符串表達(dá)式。prompt 的最大長(zhǎng)度大約是 1024 個(gè)字符,由所用字符的寬度決定。如果 prompt 包含多個(gè)行,則可在各行之間用回車(chē)符 (Chr(13)、換行符 (Chr(10) 或回車(chē)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廣東省新型城鎮(zhèn)化背景下住宅租賃合同
- 2025年度幼兒園裝修工程保修服務(wù)協(xié)議
- 2025年度按揭房屋轉(zhuǎn)讓與貸款利率調(diào)整協(xié)議
- 2025年度養(yǎng)豬場(chǎng)養(yǎng)殖廢棄物處理設(shè)施運(yùn)營(yíng)管理合同
- 2025年度戶口分家及遺產(chǎn)繼承協(xié)議書(shū)模板
- 2025年度海洋資源資產(chǎn)托管與可持續(xù)發(fā)展服務(wù)協(xié)議
- 2025年度山林流轉(zhuǎn)與生態(tài)農(nóng)業(yè)開(kāi)發(fā)合同
- 2025年度商業(yè)地產(chǎn)合租運(yùn)營(yíng)管理服務(wù)協(xié)議
- 辦公家具運(yùn)輸簡(jiǎn)易合同
- 2025年度房地產(chǎn)合伙人股權(quán)分配與項(xiàng)目開(kāi)發(fā)協(xié)議
- 2025年國(guó)家林業(yè)和草原局管理干部學(xué)院招聘歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年春季開(kāi)學(xué)典禮活動(dòng)方案【哪吒版】少年無(wú)畏凌云志扶搖直上入云蒼
- 【安排表】2024-2025學(xué)年下學(xué)期學(xué)校升旗儀式安排表 主題班會(huì)安排表
- 醫(yī)藥零售行業(yè)數(shù)字化轉(zhuǎn)型-深度研究
- 2025年度老舊小區(qū)改造施工委托合同范本
- 現(xiàn)場(chǎng)施工人員安全責(zé)任協(xié)議書(shū)(2篇)
- 四川省自貢市、遂寧市、廣安市等2024-2025學(xué)年高一上學(xué)期期末考試語(yǔ)文試題 含解析
- 2025年安徽中醫(yī)藥高等專(zhuān)科學(xué)校高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 醫(yī)院感染與醫(yī)療器械消毒
- 第七章 力 達(dá)標(biāo)測(cè)試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
- 投行競(jìng)爭(zhēng)格局-洞察分析
評(píng)論
0/150
提交評(píng)論