快速定位Word文档中特殊符号之间的文本(2/2)

上一篇博客已经讨论了这个话题,示例代码可以处理包含Word表格中的文档。但是,Word文档的多样性,并不局限于此,例如有的用户习惯于使用文本框(TextBox),文档内容位于文本框中,使得上一篇博客的代码完全无效。

实例需求:Word文档如下图中左侧所示,现需要修改手工换行符和段落符之间文字的字体为蓝色,如右图所示,注意示例文档中有两个文本框,并且第二个文本框中包含表格。

  • 在Word中使用【Shift+Enter】输入手工换行符,也称为软回车,其ASCII值为11,在文档中显示为向下的灰色箭头,如文档截图中第一行行尾所示
  • 在Word中使用【Enter】输入段落符,也称为硬回车,其ASCII值为13,在文档中显示为转角向左的灰色箭头,如文档截图中第二行行尾所示
  • 修改字体颜色时,应避免影响项目编号、项目符号的字体样式

在这里插入图片描述

示例代码如下。

Sub SearchInShape()
    Dim shp As Shape, oChar As Range, bFlag As Boolean
    Application.ScreenUpdating = False
    For Each shp In ActiveDocument.Shapes
        bFlag = False
        For Each oChar In shp.TextFrame.TextRange.Characters
            If Asc(oChar.Text) = 11 Then
                bFlag = True
            ElseIf Asc(oChar.Text) = 13 Then
                bFlag = False
            Else
                If bFlag Then oChar.Font.Fill.ForeColor.RGB = VBA.RGB(0, 0, 255)
            End If
        Next
    Next
    Application.ScreenUpdating = True
End Sub

【代码解析】
第2行代码声明shp为Shape对象变量,oChar为Range对象变量,bFlag为Boolean类型变量。
第3行代码关闭屏幕更新,提升代码运行效率。
第4行代码遍历文档中的Shape对象。
第5行代码设置bFlag初始值为False。
第6行代码遍历当前形状文本框架中的每个字符Character。
第7行代码判断字符ASCII码是否为11(软回车)。
第8行代码如果字符ASCII码为11,设置bFlag为True。
第9行代码判断字符ASCII码是否为13(段落符)。
第10行代码如果字符ASCII码为13,设置bFlag为False。
如果bFlag为True,第12行代码则设置字符字体颜色为蓝色。
第16行代码恢复屏幕更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值