Word VBA學習交流資料之二.doc_第1頁
Word VBA學習交流資料之二.doc_第2頁
Word VBA學習交流資料之二.doc_第3頁
Word VBA學習交流資料之二.doc_第4頁
Word VBA學習交流資料之二.doc_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Word VBA 學習交流資料之二感想:有感于國人的Word水平比較低,尤其是VBA這一塊,本人想請大家一起學習VBA,在提高自身的能力同時幫助需要幫助的人。感謝:綠葉的建群之功,也感謝you兄的熱烈支持,更感謝大家的大力支持!學前必備:Word VBA幫助(2003或別的都行,大體相當)(沒有也沒有關系,在這里,大多看到的就是復制自“幫助”的。)可選工具:金山詞霸(對E文不太懂的人,尤其重要)語法工具:共享區(qū)的“VBA一串通”學習方法:“不求甚解”(一開始,不太懂,沒關系,堅持下去就懂了。)學習步驟:看到例子時,復制到VBE編輯器中運行一次,看一下結果(最好按F8,一步一步地看)必要指出:是“互學”,錯誤或不妥之處難免!因我也是一邊看幫助,一邊寫。開始之前:高唱國歌(最好能喊:自強不息?。㏒tart:一、通過錄制宏生成代碼如果無法確定要使用的 Visual Basic 方法或屬性,可打開宏錄制器并進行手動操作。宏錄制器會將操作譯成 Visual Basic 代碼。錄制操作完成后,可根據(jù)需要修改代碼。例如,如果無法確定實現(xiàn)段落縮進的屬性或方法,可執(zhí)行下列操作:1. 在“工具”菜單上,指向“宏”,然后單擊“錄制新宏”。 2. 如果需要,可更改默認的宏名稱,然后單擊“確定”啟動錄制器。 3. 在“格式”菜單上,選定“段落”。 4. 更改段落左縮進的值,然后單擊“確定”。 5. 單擊“停止錄制”工具欄上的“停止錄制”按鈕。 6. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 7. 從步驟 2 中選擇宏的名稱,然后單擊“編輯”按鈕。 查看 Visual Basic 代碼來確定對應于段落左縮進的屬性(LeftIndent 屬性)。將插入點置于 LeftIndent 之中,并按 F1 或單擊“幫助”按鈕。在幫助主題中,可以查看示例以及支持 LeftIndent 屬性的對象(單擊“應用于”)。(從上面可以看出,錄制宏是我們認識未知對象的很好方法之一,同時,也知道我為什么要大家裝“金山詞霸”的原因!如果你這個單詞不認識,你怎么知道他是“左縮進”?當然,也有方法:就是把這個值設為一個比較特殊的值,再打特殊值所對應的屬性)說明錄制的宏使用 Selection 屬性返回 Selection 對象。例如,下列指令將所選段落縮進 0.5 英寸。Sub IndentParagraph() Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5)End Sub您也可以修改錄制的宏并與 Range 對象一起使用。(我們在日常的使用中經常注意到:在使用“本機上的模板”是的向導就大量使用了Selection對象,而不是Range對象!難道說微軟有更新層次的考慮?我想可能是Selection對象更穩(wěn)定,跨版本能力更強吧!)二、修改錄制的 Visual Basic 宏宏錄制器是查找所需的 Visual Basic 方法和屬性的非常方便的工具。如果不知道使用何種屬性或方法,可打開宏錄制器,手動執(zhí)行操作。宏錄制器會將操作譯為 Visual Basic 代碼。但錄制宏具有一些限制條件。您不能錄制下列內容:條件分支 變量指定 循環(huán)結構 自定義用戶窗體 出錯處理 用鼠標選定的文字(必須使用組合鍵) 若要增強宏的功能,可能需要修改錄制到模塊中的代碼。刪除 Selection 屬性使用宏錄制器創(chuàng)建的宏取決于所選內容。在大多數(shù)錄制的宏指令的開頭,可以看到“Selection”。錄制的宏使用 Selection 屬性返回 Selection 對象。例如,下列示例將所選內容移動至 Temp 書簽,并在書簽之后插入文字。Sub Macro1() Selection.Goto What:=wdGotoBookmark, Name:=Temp Selection.MoveRight Unit:=wdCharacter, Count:=1 相當于選中后按一個鍵盤的右方向鍵 Selection.TypeText Text:=New textEnd Sub這個宏雖然可以完成任務,但是有一些缺點。首先,如果文檔中沒有一個名為 Temp 的書簽,該宏將導致出錯。其次,該宏可能不正確地移動所選內容。修改這個宏,使其不再使用 Selection 對象,就可解決上述兩個問題。以下就是經修改后的宏: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 的書簽。如果找到該書簽,則用 End 屬性返回該書簽結束字符的位置。最后使用 Range 方法返回一個引用書簽結束位置的 Range 對象,以使用 InsertAfter 方法插入文字。有關定義 Range 對象的詳細信息,請參閱處理 Range 對象。使用 WithEnd With可使用 WithEnd With 結構簡化引用相同對象的宏指令。例如,在文檔頂部添加標題時,將錄制下面的宏。Sub Macro1() Selection.HomeKey Unit:=wdStory Selection.TypeText Text:=Title Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenterEnd Sub每個指令都使用 Selection 屬性返回一個 Selection 對象。可以簡化這個宏,這樣只需使用一次 Selection 屬性。Sub MyMacro() With Selection .HomeKey Unit:=wdStory .TypeText Text:=Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub不使用 Selection 對象也可以完成相同的任務。下面的宏在活動文檔的開頭使用 Range 對象來完成相同的任務。Sub MyMacro() With ActiveDocument.Range(Start:=0, End:=0) .InsertAfter Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub刪除不必要的屬性如果錄制了一個關于在對話框中選擇選項的宏,即使只更改一個或兩個選項,宏錄制器也會記錄該對話框中的所有選項的設置。如果不希望更改所有的選項,可從錄制的宏中刪除不必要的屬性。下面錄制的宏包含“段落”對話框的一些選項(單擊“格式”菜單可顯示該對話框的所有信息)。Sub Macro1() With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0) 左縮進0英寸 .RightIndent = InchesToPoints(0) 右縮進0英寸 .SpaceBefore = 6 段前距6磅 .SpaceAfter = 6 段后距6磅,下面不寫了! .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因為只設置了較少的屬性,所以簡化后的宏運行得更快。運行結果只更改選定段落的段前和段后的間距,所有其他設置都沒有改變。(注意:如果你是一個喜歡亂動的人,還是要上面吧,但他的速度肯定沒有下面的快,但他的適合環(huán)境更大.更所謂忠孝難兩全啊-)刪除不必要的參數(shù)當宏錄制器記錄一個方法時,會包含所有參數(shù)的值。打開名為 Test.doc 的文檔時,錄制了下面的宏。所得到的宏包含 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ù)(如 WritePasswordDocument:=),如下所示。Sub MyMacro() Documents.Open FileName:=C:My DocumentsTest.doc, _ ConfirmConversions:= False, _ ReadOnly:=False, AddToRecentFiles:=False, _ Revert:=False, Format:=wdOpenFormatAutoEnd Sub三、自動運行的宏通過為一個宏賦予某個特殊的名稱,就可在執(zhí)行某項操作(例如啟動 Word 或打開文檔)時自動運行宏。Word 將下列名稱識別為自動宏,或稱“auto”宏。宏名運行條件AutoExec啟動 Word 或加載全局模板時AutoNew每次新建文檔時AutoOpen每次打開已有文檔時AutoClose每次關閉文檔時AutoExit退出 Word 或卸載全局模板時當以下條件之一為真時,將識別代碼模塊中的自動宏。 模塊在自動宏(如 AutoExec)之后命名,并且包含一個名為“Main”的過程。 任何模塊中的過程在自動宏之后命名。 與其他宏一樣,自動宏也可以保存于 Normal 模板、其他模板或文檔中。要讓自動宏運行,它必須位于活動文檔的 Normal 模板中,或活動文檔選用的模板中。唯一例外的是 AutoExec 宏,它只有存儲于以下位置時才可自動運行:Normal 模板、通過“模板和加載項”對話框全局加載的模板、或由“Startup”文件夾指定的文件夾中的全局模板。在命名沖突的情況下(多個自動宏名相同),Word 將運行上下文中最近的自動宏。例如,如果同時在文檔及其附加的模板中創(chuàng)建了 AutoClose 宏,則僅執(zhí)行文檔中的自動宏。如果在 Normal 模板中創(chuàng)建了 AutoNew 宏,只有當文檔或其附加模板中沒有名為 AutoNew 的宏時,該自動宏才能運行。(筆者注:簡稱就近原則!)注釋按住 Shift 可以終止自動宏的運行。例如,基于包含 AutoNew 宏的模板新建文檔時,按住 Shift 可終止 AutoNew 宏的運行。方法是:按住 Shift,單擊(“文件”菜單)“新建”對話框中的“確定”按鈕,并在顯示新文檔前持續(xù)按住 Shift。如果運行一個宏時有可能觸發(fā)自動宏,(這種情況,我沒遇過!)可用下列指令終止自動宏的運行:WordBasic.DisableAutoMacros四、修改 Word 命令大多數(shù) Word 命令都可通過轉換為宏的方式對其進行修改。例如,可修改“文件”菜單上的“打開”命令,使其不再顯示 Word 文檔文件列表(擴展名為 .doc 的文件),而顯示當前文件夾中的所有文件。若要在“宏”對話框中顯示內置 Word 命令列表,可在“宏的位置”框中選定“Word 命令”。顯示的命令列表中包含所有的菜單命令、工具欄命令或快捷鍵命令。菜單命令名稱以相關的菜單名稱開頭。例如,“文件”菜單中的“保存”命令顯示為“FileSave”。方法是工具/宏/宏通過將一個宏命名為與 Word 命令相同的名稱,就可用宏替代 Word 命令。例如,如果創(chuàng)建一個名為“FileSave”的宏,當選擇“文件”菜單上的“保存”命令、單擊“保存”工具欄按鈕,或按“保存文件”快捷鍵時,Word 將運行該宏。本示例介紹了修改 FileSave 命令的步驟。1. 在“工具”菜單上,指向“宏”,然后單擊“宏”。 2. 在“宏的位置”框中,選擇“Word 命令”。 3. 在“宏名”框中,選擇“FileSave”。 4. 在“宏的位置”框中選擇一個模板或文檔以保存該宏。例如,選擇 Normal.dot(全局模板)可生成一個共用宏(即修改所有文檔的“FileSave”命令)。5. 單擊“創(chuàng)建”按鈕。 FileSave 宏顯示如下:Sub FileSave() FileSave Macro Saves the active document or template ActiveDocument.SaveEnd Sub可添加指令或刪除現(xiàn)有的 ActiveDocument.Save 指令。之后在運行“FileSave”命令時,新的 FileSave 宏將取代 word 命令。若要恢復“FileSave”原有的功能,需重新命名新的 FileSave 宏或將之刪除。說明: 也可以創(chuàng)建與 Word 命令同名的代碼模塊(例如 FileSave)并包含名為 Main 的子程序,以此替換 Word 命令。五、將文本插入文檔使用 InsertAfter 或 InsertBefore 方法在 Selection 或 Range 對象之前或之后插入文字。下列示例在活動文檔的末尾插入文字。Sub InsertTextAtEndOfDocument() ActiveDocument.Content.InsertAfter Text:= The end.End Sub下列示例在所選內容之前插入文字。Sub AddTextBeforeSelection() Selection.InsertBefore Text:=new text End SubRange 對象或 Selection 對象在使用了 InsertBefore 或 InsertAfter 方法之后,會擴展并包含新的文本。使用 Collapse 方法可以將 Selection 或 Range 折疊到開始或結束位置。六、選定文檔中的文本可使用 Select 方法選定文檔中的對象。Select 方法可用于多種對象,例如 Bookmark、Field、Range 和 Table 對象。下列示例選定活動文檔中的第一個表格。Sub SelectTable() ActiveDocument.Tables(1).SelectEnd Sub下列示例選定活動文檔中的第一個域。Sub SelectField() ActiveDocument.Fields(1).SelectEnd Sub下列示例選定活動文檔中的前四個段落。Range 方法用于創(chuàng)建一個引用前四個段落的 Range 對象,然后將 Select 方法應用于 Range 對象。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選定文檔中的文本:我覺得用處不大,原因就是為什么要選中呢?能操作就直接操作,不能的話,就選中吧(他可以說是沒辦法的辦法).七、編輯文字本主題包含與下列任務相關的 Visual Basic 示例: 確定文本是否被選定 折疊選定內容或區(qū)域 擴展選定內容或區(qū)域 重新定義 Range 對象 更改文本 有關其他編輯任務的信息和示例,請參閱下列主題:從文檔返回文本 選定文檔中的文本 將文本插入文檔 修改文檔的某一部分 確定文本是否被選定Selection 對象的 Type 屬性返回所選內容類型的信息。如果所選內容為插入點,則下列示例顯示一條消息Nothing is Selected。沒選中任何問題Sub IsTextSelected() If Selection.Type = wdSelectionIP Then MsgBox Nothing is selectedEnd Sub折疊所選內容或區(qū)域使用 Collapse 方法可將 Selection 或 Range 對象折疊到開始或結束點的位置。下列示例在所選內容的開頭將所選內容折疊為一個插入點。Sub CollapseToBeginning()Selection.Collapse Direction:=wdCollapseStartSelection.Collapse Direction:=wdCollapseEndEnd Sub這個是標準的折疊的程序,以后可能會用到的噢!下列示例將區(qū)域折疊至其結束點(在第一個單詞之后),并添加新文本。Sub CollapseToEnd() Dim rngWords As Range Set rngWords = ActiveDocument.Words(1) 設置第一個單詞為區(qū)域rngWords With rngWords .Collapse Direction:=wdCollapseEnd 折疊到最后,區(qū)域與可以折疊的噢! .Text = (This is a test.) 在折疊的最后加入這些文字 End WithEnd Sub擴展所選內容或區(qū)域下列示例使用 MoveEnd 方法擴展所選內容的結尾以包含三個附加的單詞(總共是4個?。?。MoveLeft、MoveRight、MoveUp 和 MoveDown 方法也可以用于擴展 Selection 對象。Sub ExtendSelection() Selection.MoveEnd Unit:=wdWord, Count:=3End Sub下列示例使用 MoveEnd 方法擴展區(qū)域,以包含活動文檔中的前三個段落。Sub ExtendRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Paragraphs(1).Range rngParagraphs.MoveEnd Unit:=wdParagraph, Count:=2End Sub重新定義 Range 對象使用 SetRange 方法可重新定義現(xiàn)有的 Range 對象。更改文字通過更改某一區(qū)域中的內容可更改現(xiàn)有的文字。下列指令通過將 Text 屬性設為“The”來更改活動文檔中的第一個單詞。Sub ChangeText() ActiveDocument.Words(1).Text = The End Sub也可以使用 Delete 方法刪除現(xiàn)有文本,然后使用 InsertAfter 或 InsertBefore 方法插入新文本。下列示例刪除活動文檔的第一段,并插入新文本。Sub DeleteText() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range With rngFirstParagraph .Delete .InsertAfter Text:=New text .InsertParagraphAfter End WithEnd Sub上面的這個例子我們通常不用,我們更喜歡用下面Sub DeleteText1() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range rngFirstParagraph.Text = New text & Chr(13)End Sub八、將格式應用于文本本主題包含與下列任務相關的 Visual Basic 示例: 將格式應用于選定內容 將格式應用于某一區(qū)域 插入文本并應用字符和段落格式 在 12 磅和無之間切換段前間距 切換加粗格式 將左邊距增加 0.5 英寸 將格式應用于選定內容下列示例使用 Selection 屬性將字符和段落格式應用于選定文本。使用 Font 屬性獲得字體格式的屬性和方法,使用 ParagraphFormat 屬性獲得段落格式的屬性和方法。Sub FormatSelection() With Selection.Font .Name = Times New Roman .Size = 14 .AllCaps = True 全部大寫 End With With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0.5) 左縮進0.5英寸 .Space1 這是單倍行距的縮寫 End WithEnd Sub將格式應用于某一區(qū)域下列示例定義了一個 Range 對象,它引用了活動文檔的前三個段落。通過應用 Font 和 ParagraphFormat 對象的屬性來設置 Range 對象的格式。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 兩端對齊 End WithEnd Sub插入文字并應用字符和段落格式下列示例在當前文檔的上部添加單詞 Title。第一段居中對齊,并在該段落之后添加半英寸的間距。將單詞 Title 的格式設為 24 磅 Arial 字體。Sub InsertFormatText() Dim rngFormat As Range Set rngFormat = ActiveDocument.Range(Start:=0, End:=0) With rngFormat .InsertAfter Text:=Title .InsertParagraphAfter 插入段落標記 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 磅和無之間切換段前間距下列示例切換選定內容中第一段的段前間距。宏將獲取當前段前間距的值,如果該值為 12 磅,則刪除段前間距格式(將 SpaceBefore 屬性設為零)。如果段前間距的值為除 12 外的其他數(shù)值,則將 SpaceBefore 屬性設為 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 對象包含文檔的所有的頁面設置屬性(左邊距、下邊距、紙張大小等)。LeftMargin 屬性用于返回和設置左邊距設置。RightMargin 屬性用于返回和設置右邊距設置。Sub FormatMargins() With ActiveDocument.PageSetup .LeftMargin = .LeftMargin + InchesToPoints(0.5) .RightMargin = .RightMargin + InchesToPoints(0.5) End WithEnd Sub九、查找并替換文字或格式通過 Find 和 Replacement 對象可實現(xiàn)查找和替換功能。Selection 和 Range 對象可以使用 Find 對象。從 Selection 或 Range 對象訪問 Find 對象時,查找操作會略有不同。查找并選定文字如果從 Selection 對象訪問 Find 對象,當找到搜索條件時,就會更改所選內容。下列示例選定下一個出現(xiàn)的“Hello”。如果到達文檔結尾時仍未找到“Hello”,則停止搜索。With Selection.Find .Forward = True .Wrap = wdFindStop .Text = Hello .ExecuteEnd WithFind 對象包含與“查找和替換”對話框中的選項相關的屬性(在“編輯”菜單上選擇“查找”可顯示該對話框)??梢栽O置 Find 對象單獨的屬性或使用 Execute 方法的參數(shù),如下例所示。Selection.Find.Execute FindText:=Hello, _ Forward:=True, Wrap:=wdFindStop查找文字,但不更改所選內容如果從 Range 對象訪問 Find 對象,則找到搜索條件時,不更改所選內容,但是會重新定義 Range 對象。下列示例在活動文檔中查找第一個出現(xiàn)的“blue”。如果找到該單詞,則重新定義該區(qū)域,并將加粗格式應用于單詞“blue”。With ActiveDocument.Content.Find .Text = blue .Forward = True .Execute If .Found = True Then .Parent.Bold = TrueEnd With下列示例使用 Execute 方法的參數(shù),執(zhí)行結果與上例相同。Set myRange = ActiveDocument.ContentmyRange.Find.Execute FindText:=blue, Forward:=TrueIf myRange.Find.Found = True Then myRange.Bold = True使用 Replacement 對象Replacement 對象代表查找和替換操作的替換條件。Replacement 對象的屬性和方法對應于“查找和替換”對話框中的選項(單擊“編輯”菜單中的“查找”或“替換”命令可顯示該對話框)。可通過 Find 對象使用 Replacement 對象。下列示例將所有單詞“hi”替換為“hello”。由于 Find 對象是通過 Selection 對象訪問的,所以當找到搜索條件時,會更改所選內容。With Selection.Find .ClearFormatting .Text = hi .Replacement.ClearFormatting .Replacement.Text = hello .Execute Replace:=wdReplaceAll, Forward:=True, _ Wrap:=wdFindContinueEnd With下列示例取消活動文檔中的加粗格式。Find 對象的 Bold 屬性為 True,而 Replacement 對象的該屬性為 False。若要查找并替換格式,可將查找和替換文字設為空字符串 (),并將 Execute 方法的 Format 參數(shù)設為 True。由于從 Range 對象訪問 Find 對象,所選內容將保持不變(Content 屬性返回一個 Range 對象)。With ActiveDocument.Content.Find .ClearFormatting .Font.Bold = True With .Replacement .ClearFormatting .Font.Bold = False End With .Execute FindText:=, ReplaceWith:=, _ Format:=True, Replace:=wdReplaceAllEnd With上面的查找與替換是重點!他能解決很多的替換問題。舉例:原地址是:/dispbbs.asp?boardID=23&ID=153805&page=1摘題目:怎樣用宏統(tǒng)計word文件中某一個漢字,例如“的”字出現(xiàn)的數(shù)量?(可以這樣:新建一個文檔,輸入“=rand(50,50)”,再按回車(不包括雙引號“”),則產生了虛擬文本,在此虛擬文本中試驗)方法有三:Sub getfoundcount1() Dim a As Range, i% Dim c, d c = Timer 設C為運行前的時間 For Each a In ActiveDocument.Characters 在字符間循環(huán) If a Like 的 Then 如果是“的” i = i + 1 則加上,i的初始值是0,不用設的,默認 End If Next d = Timer c 用現(xiàn)在的時間減去運行前的時間等于用時 MsgBox Word 找到 & i & 個與此條件相匹配的項!, vbInformation, dEnd Sub上面此法利用循環(huán)比較字符是否是的是“的”字,來判斷!用時下面的圖形的標題欄 圖表 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 當查找到后停止,就是每次縮小范圍 Do While .Execute 當查找時則累加 FoundCount = FoundCount + 1 Loop End With b = Timer - a Debug.Print b Debug.Print FoundCount MsgBox Word 找到 & FoundCount & 個與此條件相匹配的項!, vbInformation, bEnd Sub上面是標準的用查找來判斷累加,(也是老大的代碼)圖表 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碼來分裂 c = UBound(b) 取得上限 e = Timer d 取得時間 Debug.Print e 這個是輸出到調試區(qū)的 Debug.Print c 這個也是 MsgBox Word 找到 & c & 個與此條件相匹配的項!, vbInformation, eEnd Sub上面是利用數(shù)組,把“的”看成是用于split數(shù)組的字符,通過是判斷數(shù)組的上限來判斷是幾位數(shù)組,即是幾個“的”。圖表 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) 包括“的”的長度 lngNew = Len(Replace(strText, myText, ) 替換“的”后的長度 MsgBox Word 找到 & lngOld - lngNew & 個與此條件相匹配的項!, vbInformation, VBA.Timer - TimesEnd Sub圖表 4(上面是老大又寫了一個,老大隨后的代碼的運行速度更是十分驚人)兩種方法運行最高。一個是0.1秒與一個是6秒,效率是可想而知!大家試試!十、從文檔返回文本使用 Text 屬性可以返回 Range 或 Selection 對象中的文本。下列示例選定下一個格式設為“標題 1”樣式的段落。然后通過 MsgBox 函數(shù)顯示 Text 屬性的內容。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下列示例返回活動文檔中的第一個單詞。Words 集合中的每一項是代表一個單詞的 Range 對象。Sub ShowFirstWord() Dim strFirstWord As String strFirstWord = ActiveDocument.Words(1).Text MsgBox strFirstWordEnd Sub下列示例返回與活動文檔中第一個書簽相關聯(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ù)在一對話框來中顯示提示,等待用戶輸入正文或按下按鈕,并返回包含文本框內容的 String。語法InputBox(prompt, title , default , xpos , ypos , helpfile, context) InputBox 函數(shù)的語法具有以下幾個命名參數(shù):部分描述Prompt必需的。作為對話框消息出現(xiàn)的字符串表達式。prompt 的最大長度大約是 1024 個字符,由所用字符的寬度決定。如果 prompt 包含多個行,則可在各行之間用回車符 (Chr(13)、換行符 (Chr(10) 或回車

溫馨提示

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

評論

0/150

提交評論