首页 > 解决方案 > Word VBA 替换多个空格

问题描述

我与世界各地的用户一起工作,他们中的许多人似乎不知道 Tab 键的用途,或者在句子之间插入多个空格(正常和不间断)。我们的企业标准是句子之间只有一个空格。我想编写 VBA 代码来查找多个普通空格、多个不间断空格或这些空格的组合(是的,我知道...),最多可以找到六个(是的,我知道。 ..),并用一个普通空格替换.. 有没有一种快速编码的方法?恐怕我不太擅长通配符...谢谢大家。

标签: vbams-wordspaces

解决方案


你真的不需要这个宏......

尽管如此,要找到两个或多个空格的任何序列并仅用第一个替换它们(可能是也可能不是不间断的空格 - 可能有很好的理由保留),而不管用户的区域(可以影响通配符查找/替换表达式):

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "([^s ])@[^s ]"
    .Replacement.Text = "\1"
    .Forward = True
    .Format = False
    .Wrap = wdFindContinue
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End With
Application.ScreenUpdating = True
End Sub

如果您真的不想保留任何初始不间断空格,请将“\1”更改为“”。


推荐阅读