vba - Selection.Find.Execute 在 Word 2013 中无法正常工作

标签 vba ms-word

我为 Word 2003 编写了一个宏来删除不需要的“回车”并将它们替换为空格。

因此,在选择一段文本后,我运行宏,选择中的“回车”被替换。

但在 Word 2013 下,即使我只选择几行,也会在整个文档中进行替换。

这是我的代码:

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^p"
    .Replacement.Text = " "
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
    .Text = "  "
    .Replacement.Text = " "
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll

编辑

我试过使用宏记录器,得到了相同的代码。 此外,该命令在录制期间对选择起作用,但在执行宏时对整个文档起作用。

这是一个错误吗?有什么解决方法吗?

最佳答案

问题可能是 .Wrap = wdFindAsk,因为这会在搜索完 Selection 后提示您搜索是否应该扩展到整个文档。但是如果你运行这个宏,提示不会出现并且默认为 Search the whole Document,所以你的整个 Document 都被检查了。

.Wrap = wdFindStop 应禁用提示,并在到达选择 结束后停止替换。

参见:Wrap property

关于vba - Selection.Find.Execute 在 Word 2013 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821656/

相关文章:

ms-access - 如何仅关闭由 OLEFormat.Activate 打开的 Excel 实例

vba - 循环浏览目录中的所有Word文件

vba - 在 vba 中填充单元格的更快方法

javascript - 如何从vba中查找和调​​用javascript方法

vba - 将多个文件发送到多个地址的宏

ms-word - COMException:调用的对象已与其客户端断开连接

c# - 如何专注于刚刚通过互操作打开的 Word 文档?

excel - 从多个 Microsoft Word 文件中提取文本框数据

excel - 确定多个单元格中最小值的位置?

excel - 运行时错误 '1004' : Method 'Range' of object'_Global' failed