實例需求:Word文檔用于英語單詞學習,重點記憶單詞標記下劃線,其內容如下圖所示。
現在文檔轉換為填空題(無論單詞字符多少,填空部分統一使用10個空格)和參考答案兩部分,如下圖所示。
示例代碼如下。
Sub Demo()Dim oDoc As Document: Set oDoc = ActiveDocumentDim oRng As Range: Set oRng = oDoc.RangeDim iEnd As Long: iEnd = oRng.EndoRng.InsertParagraphAfteroRng.Paragraphs.Last.Range.ListFormat.RemoveNumbers NumberType:=wdNumberParagraphoRng.CopyoRng.Characters.Last.InsertAfter vbCr & "參考答案" & vbCroRng.Collapse Direction:=wdCollapseEndoRng.PasteDim pasteRange As RangeSet pasteRange = oDoc.Range(oRng.Start, oDoc.Range.End)If pasteRange.ListFormat.ListType <> wdListNoNumbering ThenpasteRange.ListFormat.ApplyListTemplate _ListTemplate:=ListGalleries(wdNumberGallery).ListTemplates(1), _ContinuePreviousList:=FalseEnd IfSet oRng = oDoc.Range(0, iEnd)With oRng.Find.ClearFormatting.Replacement.ClearFormatting.Font.Underline = wdUnderlineSingle.Forward = True.Wrap = wdFindStop.Replacement.Text = String(10," ").Execute Replace:=wdReplaceAllEnd With
End Sub
【代碼解析】
第2行代碼獲取當前的活動Word文檔。
第3行代碼獲取文檔的Range對象引用。
第4行代碼獲取文檔的結束位置。
第5行代碼在文檔最后插入段落標記。
第6行代碼移除最后一個段落的編號樣式。
第7行代碼復制文檔內容到剪貼板。
第8行代碼在文檔末尾插入“參考答案”段落。
第9行代碼將范圍折疊到文檔末尾。
第10行代碼在當前位置(即文檔末尾)粘貼剪貼板內容。
第12行代碼獲取新粘貼部分文檔的Range對象。
第13行代碼判斷使用使用的編號格式。
如果有編號,第14~16行代碼則應用新的編號格式(使用數字庫中的第一個模板),并重新開始編號。
第18行代碼獲取原始文檔的Range對象引用。
第20行代碼清除查找格式。
第21行代碼清除替換格式。
第22行代碼設置查找下劃線字體格式。
第23行代碼指定向前查找。
第24行代碼指定查找結尾就停止。
第25行代碼指定替換文本為10個空格。
第26行代碼替換全部重點單詞為空格。