如何隐藏Microsoft Word中特殊字符之间的文本?

时间:2019-06-18 13:21:53

标签: vba ms-word ms-office word-vba

我正在尝试创建一个宏,但是我不知道从哪里开始,我想在特殊字符之间隐藏一些文本,例如:

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ (including "space" char)

例如,如果我有这样的文档:

::00-58-96::Hello there
::00-58-97::This is a test
::00-58-98::Nothing else
::00-58-99::Good bye !

我想在执行宏后得到这个:

Hello there
This is a test
Nothing else
Good bye !

之间的文字

  

:: ::

已被删除(包括:::)

另一个例子:

>>>some%text_here>>>This is another example
>>>some%text"here>>>Thank you for reading
>>>some%text@here>>>I hope you will have
>>>some&text²here>>>A great day

输出将是:

This is another example
Thank you for reading
I hope you will have
A great day

我第一次考虑使用“查找和替换文本”功能,但是我认为这太复杂了。

任何提示都会很有帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

这可以做到:

注意:它将删除不需要的文本。不要隐藏它。

Sub tst()

    ActiveDocument.Range.Select ' You can remove this line and run macro after selecting the text in which you want the replacement. This line will select the entire document.

With Selection.Find
     .MatchWildcards = True
     .Text = "::*::"
     .Replacement.Text = ""
     .Execute Replace:=wdReplaceAll, Forward:=True, _
     Wrap:=wdFindContinue
End With


End Sub

Pro:Cntrl + Z可以撤消此操作,如果它没有达到预期的效果。

答案 1 :(得分:0)

您不需要VBA-您只需要一个通配符查找/替换,其中:

查找=([!“#$%&'()* +,-。/ :; <=> \?@ [\] ^ 94_` {|}〜] {2,})* \ 1 < / p>

然后,根据要删除还是仅隐藏找到的内容,使用:

替换=无

替换= ^&

分别具有“隐藏”字体属性。

您当然可以将上面的内容记录为宏。