Word VBA如何间隔选中多个(非连续)段落
扫测资讯 2024-11-16 06:07 55 0
实例需求:Word文档中的有多个段落,段落总数量不确定,现在需要先选中所有基数段落,即:段落1,段落3 … ,然后一次性设置粗体格式。
也许有的读者会认为这个无厘头的需求,循环遍历遍历文档中的段落,设置奇数段落的格式就可以了,确实如此,这是常规实现思路。
但是存在的即是合理的,借助
Editor
对象,可以完美实现这个需求。
示例代码如下。
Sub SelectMultiParagrpah()
Dim i As Long, iCnt As Long, oDoc As Range
With Selection
.HomeKey Unit:=wdStory, Extend:=wdMove
iCnt = ActiveDocument.Paragraphs.Count
For i = 1 To iCnt Step 2
.Expand wdParagraph
.Editors.Add Word.WdEditorType.wdEditorCurrent
.Move wdParagraph, 2
Next i
End With
Set oDoc = ActiveDocument.Content
With oDoc.GoToEditableRange(wdEditorCurrent).Editors(1)
.SelectAll
.DeleteAll
End With
Selection.Font.Bold = True
End Sub
【代码解析】
第4行代码将Selection对象移至文档起始位置。
第5行代码获取文档的段落数量。
第6~10行代码循环选中奇数段落。
第7行代码选中当前段落,即扩展选区范围。
第8行代码添加当前用户的可编辑区域。
第9行代码将Selection移动到下一个目标段落起始位置。
第12行代码获取文档全部内容。
第14行代码选中全部可以编辑范围。
第15行代码删除当前用户的编辑权限设置。
第17行代码设置选中段落的字体为粗体格式。