怎么替换Word中特定区域内的不连续的空格?

如题:1、下列( A BC D )属于水果。A、苹果 B、香蕉 C、桔子 D、荔枝 E、黄瓜利用通配符变为下列形式如题:1、下列(ABCD)属于水果。A、苹果 B、香蕉 C、桔子 D、荔枝 E、黄瓜2、。。。。。。3、。。。。。。要求,用通配符,只替换()中的空格,答案里的空格不可以替换。

这个建议使用两步替换法。

具体替换过程如下:

文档示例如下图:

步骤1、打开查找替换,点击查找,点击更多,勾选使用通配符

步骤2、查找(*),点击在以下项中查找-主文档

步骤3、我们可以看到文档中所有的题干中的括号中的内容都已经选中

步骤4、关闭查找替换窗格,然后重新打开查找替换窗格。

选择替换

查找:空格(敲一个空格)

替换:空(什么也不写)

点击全部替换

步骤5、然后我们发现所有括号中的空格都已经被删除了

追问

答案里的空格也全都没有了……。

追答

第3步结束后,要关闭查找替换窗格。第4步再重新打开查找替换窗格。过程中,保证文字处于选中状态。具体看下面的动图。

追问

嗯 ,一步一步操作是可以的,但录制成宏后,就一下子把答案中的也KO了。。。。。

追答

操作既然可以,那还有什么问题?录制宏的话,自然是不行的,因为不能录制查找选定的这一过程,用vba的话,你要先设定替换空格的范围range,这个范围是查找到的(*)。不过没必要啊,就一步的事,手动不费事吧,甚至你可以先查找(*)主文档,然后再查找空格-在所选内容查找,然后删除,变成2步。

追问

大神,VBA可以的话,请给个代码,谢谢!我处理的东西多。

追答

Sub 删括号内容中间的空格()

Selection.HomeKey Unit:=wdStory

With Selection.Find
For i = 1 To 1000
i = i + 1

.ClearFormatting
.Execute findtext:="(*)", Format:=True, Forward:=True

If .Found = True Then

.Parent.Find.Execute findtext:=" ", ReplaceWith:="", _
Replace:=wdReplaceAll

End If

Next i
End With

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-22

CTRL+H

选择替换,选中使用通配符。

上面的地方输入(*A*B*C*D*),后面一个输入(ABCD)。

全部替换后完成

第2个回答  2021-09-22
CTRL+H,查找内容,复制后粘贴( A BC D ),替换为 复制后粘贴 (ABCD)
全部替换。
第3个回答  2021-09-23
勾选“使用通配符”,查找:([A-Z])^32([A-Z]),替换为:\1\2即可,一遍不够再来一遍。追问

试了,不行哦。还有吗?

追答

没问题的,有动图为证:

追问

谢谢你的思路。分三步走:
1、([A-Z])^32@([A-Z])替换为\1\2,执行两次。
2、"(^32@([A-Z])"替换为"(\1"
3、"([A-Z])^32@)"替换为 "\1)"
以下为宏内容:
With Selection.Find
.Text = "([A-Z])^32@([A-Z])"
.Replacement.Text = "\1\2"
End With

Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
。。。。。。

追答

还有一个思路:
打开查找对话框,勾选“使用通配符”,查找栏填:([A-Z^32]@)
点开“在以下项中查找”,点选“主文档”,此时目标范围被选中。接着将查找栏内容改为:^32{1,}
点开“在以下项中查找”,点选“当前所选内容”,此时最终目标被选中,关闭查找对话框,在键盘上按“Delete”,完工

追问

是的,另一个思路也非常棒,高效,可惜用宏录制不下来,只能工人操作。我想弄成宏,一劳永逸,VB会,但VBA没玩过,所以只能用笨办法了。

本回答被提问者采纳
相似回答