我想将我的一个 Word 文档中的所有双空格 ( ) 替换为单空格 (
)。令我极为惊讶的是,我的 Microsoft Word 2013 Home 副本能够找到双空格,但无法替换它们,因为它声称在我的文档中未找到任何内容。
如果我按Ctrl+ F,则会出现左窗格,当我进入它时,我可以看到,我的特定文档中有超过 350 次双倍空格。相反,当我按Ctrl+H和“搜索和替换“窗口出现,然后当我进入
它并单击时
Find Next
,会出现一条消息通知我,在我的文档中没有找到任何内容。
更让人纠结的是,如果我留在“搜索和替换“对话框,但从 切换Replace
到Find
制表符,在那里输入双倍空格并单击Find Next
那里,然后 - 再次 - Word 能够自动找到我的文档中所有 350 多个双倍空格出现的位置。
我错过了什么?Word 如何能够只是发现某事,但不能查找和替换和另一件事一样吗?这是 Word 中某种奇怪的书,还是我的(相当复杂和庞大的)文档的格式真的很奇怪?
我尝试过重启 Word 和电脑。我尝试过将此特定文档保存到新文件中,然后从新文件中重新打开它。当然,我已仔细检查过,确保没有选中任何奇怪/非标准选项Search options
(单击后More
),确保没有选中任何奇怪内容Format
或未Special
使用任何内容。这只是一个基本的、未经修改的搜索或替换过程,在搜索时非常有效,但在替换时却完全失败。
答案1
不管怎样,这是我发明的一个宏,它可以删除文档中的所有多余空格。由于这是我几年前改编的别人的宏,所以我无法详细向您解释它的工作原理。
Sub RemoveExtraSpaces()
'
' RemoveExtraSpaces Macro
' I wanted to be able to add the replacements to a list rather than repeating the same find command over and over
'
' Don't forget to add the comma and space when adding new exceptions!
ScreenUpdating = False
findArray = Array(" ", " ", " ,", " .", " ;", "( ", " )", " ?", " !", ". ^p", "? ^p", "! ^p", "..", ",,", "^p ")
replArray = Array(" ", " ", ",", ".", ";", "(", ")", "?", "!", ".^p", "?^p", "!^p", ".", ",", "^p")
For i = 0 To UBound(findArray)
'Selection.Find.ClearFormatting
'Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = findArray(i)
.Replacement.Text = replArray(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
ScreenUpdating = True
End Sub