Word VBA如何间隔选中多个(非连续)段落

实例需求:Word文档中的有多个段落,段落总数量不确定,现在需要先选中所有基数段落,即:段落1,段落3 ... ,然后一次性设置粗体格式。

也许有的读者会认为这个无厘头的需求,循环遍历遍历文档中的段落,设置奇数段落的格式就可以了,确实如此,这是常规实现思路。

但是存在的即是合理的,借助Editor对象,可以完美实现这个需求。

示例代码如下。

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

相关推荐
taller_20003 个月前
使用VBA快速生成Excel工作表非连续列图片快照
拷贝区域为图片·拷贝非连续区域·非连续·拷贝图片·拷贝单元格为图片
taller_20003 个月前
使用VBA快速将文本转换为Word表格
word·vba·表格·word vba·文本转表格
taller_20001 年前
VBA实现Word表格排序
word·多列表格·表格排序·word表格·word vba