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行代码设置选中段落的字体为粗体格式。