Word VBA:查找隐藏字符

目录

一、问题复述

二、大家的讨论

三、问题的结论

四、手动操作方法

1.显示隐藏文字

2.设置隐藏文字

3.查找隐藏文本

4.得出的结论

五、用Word VBA代码查找隐藏文本

1.没有设置【显示隐藏文字】

2.设置【显示隐藏文字】后

六、总结


一、问题复述

问题意思:【在Word VBA中,如果需要提取Word文档的的隐藏字符,需要先将隐藏字符取消隐藏才能用查找(替换)方法找到相应字符。那么不显示隐藏字符能查找到对应字符吗?】

前几天,在一个VBA的交流群里有人提出了这个问题:

图1.1 问题原文

二、大家的讨论

因为关于Word隐藏字符,大家很少用到,Word VBA不像Excel VBA那样普及,多数人是不知道或不确定。

图2.1 大家讨论01

题主也@了我,看看我能否解决。所以实测了一下,顺便把【Word隐藏字符】相关的内容整理一下。

图2.2 大家讨论02

三、问题的结论

如果题主说的【取消隐藏】指的是在文本字体中将【隐藏】不勾选,即下图内容

图3.1

则:

不取消隐藏,可以提取到隐藏文本。但是这样的话,如果文字由隐藏变为不隐藏,和其他内容无区别时,也不可能 提取到。

如果题主说的【取消隐藏】指的是下文这部分所述【显示隐藏文字】

图3.2

则不取消隐藏,不可以提取到隐藏文本。

但是有个前提条件:在【文件】-【选项】-【显示】中,勾选【隐藏文字】。(也就是说要显示隐藏文字)

四、手动操作方法

1.显示隐藏文字

这样做的目的是在后面设置了隐藏字符时,才可以看到效果。

图4.1 单击【文件】选项卡

图4.2点击【选项】

图4.3 显示隐藏文字的2种方法

2.设置隐藏文字

(1)随机选取一些文本

*按住【ctrl】可以选中多处文本

图4.4 选择文本

(2)文本字体设置隐藏属性

*点击【字体】右下角,在弹出的对话框中,勾选【隐藏】,【确定】。

图4.5 将文本设置为隐藏字符

(3)查看编辑视图

在编辑视图中,可以看见,每个隐藏文字下方都有【虚线标记】。

图4.6 隐藏文字的编辑视图

(4)查看打印预览视图

图4.7 打印效果图

对比效果:

图4.8 对比打印视图和编辑视图的意外差异

(5)编辑视图(普通视图)不显示隐藏文字的效果

如果将【四】-【1】中的【显示隐藏文字】改为不显示

4.9 编辑视图不显示隐藏文字的效果

则我们编辑时肉眼看不到这些隐藏文字。

排版时,一般不建议编辑视图不显示这些隐藏字符。因为编辑状态,我们需要知道文档里这种字符真正的组成,这与打印效果是相互不冲突的,也只有编辑时将各种隐藏标记处理好,才能打印出好的纸质文件。

(6)由此可知
隐藏字符在默认情况下是不会被打印出来。

3.查找隐藏文本

(1)步骤:

A.点击【开始】-【替换】,点击【查找内容】框,点击左下角的【格式】-【字体】

图4.10 高级查找-【字体】

B.在弹出的【字体】对话框中,将【效果】-【隐藏】勾选上,点击确定。

图4.11【字体】-【效果】-勾选【隐藏】

C.查找结果

a.如果上面【1.】步骤中没有设置【显示隐藏文字】的话,点击【查找下一处】,会显示【未查找到结果】

图4.12 没有设置【显示隐藏文字】时查找

b.如果上面【1.】步骤中有设置【显示隐藏文字】的话,点击【查找下一处】,会逐个显示每个隐藏字符串,直到完成全文查找一遍。

图4.13 设置【显示隐藏文字】后查找

4.得出的结论

在Word高级查找中,如果需要手动查找到隐藏文字,需要将将在【选项】-【显示】中将【隐藏文字】设置为显示状态。

五、用Word VBA代码查找隐藏文本

1.没有设置【显示隐藏文字】

如果上面【四、】【1.】步骤中没有设置【显示隐藏文字】的话,运行程序,内容显示为空,但开始和结束位置可以找到。

A.代码

Sub 查找隐藏文本()
    With ActiveDocument.Content.Find    '查找全文
        .ClearFormatting                '清除查找框格式
        .Format = True                  '查找包含格式
        .Font.Hidden = True             '查找字体格式为隐藏的
        .Forward = True                 '向前查找
        .Wrap = wdFindStop              '查找完成后停止
        Do While .Execute               '如果找到了
            '分别打印:找到的内容,找到内容的开始位置,找到内容的结束位置
            Debug.Print .Parent, .Parent.Start, .Parent.End
        Loop
    End With
End Sub

B.执行结果

图5.1 不设置【显示隐藏文字】时,VBA查找结果

2.设置【显示隐藏文字】后

如果上面【四、】【1.】步骤中设置【显示隐藏文字】后,运行程序,内容、开始和结束位置都可以找到。

A.代码

*可先用变量x记录下文档是否显示隐藏文字的状态,然后设置为显示;提取完成后,如果有必要,可恢复到原始状态。

Sub 查找隐藏文本1()
    Dim x As Boolean    '定义x为布尔型,用于记录文档是否显示了隐藏文字
    x = ActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText  '文档是否显示了隐藏文字的值赋值给x
    Debug.Print x
    ActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText = True   '将文档设置为显示隐藏文字的状态
    With ActiveDocument.Content.Find    '查找全文
        .ClearFormatting                '清除查找框格式
        .Format = True                  '查找包含格式
        .Font.Hidden = True             '查找字体格式为隐藏的
        .Forward = True                 '向前查找
        .Wrap = wdFindStop              '查找完成后停止
        Do While .Execute               '如果找到了
            '分别打印:找到的内容,找到内容的开始位置,找到内容的结束位置
            Debug.Print .Parent, .Parent.Start, .Parent.End
        Loop
    End With
    ActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText = x  '将文档是否显示隐藏文字恢复到开始的状态
End Sub

B.执行结果

图5.2 设置【显示隐藏文字】时,VBA查找结果

如果不想改变文档原有状态,又需要用VBA提取隐藏文字,则本人推荐使用这种方法

六、总结

本文从网友提问为切入点,介绍了Word中的【隐藏文字】相关的基础设置、用高级查找手动查找隐藏文字的方法和用VBA查找隐藏文字的方法及处理技巧。希望对于Word软件的入门级、中级和高级用户都有所启发。

广大网友的认可与支持虽然不是创作的必要条件,但是,您的支持是创作的强大动力之一,如果认为本文对您使用Word有所帮助,记得帮忙点赞收藏评论转发。如果有Office办公套件中的任何问题,欢迎大家提问,共同交流。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VBA-守候

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值