Selection.Find.Execute无法与Word 2013正常工作

时间:2017-08-22 15:25:44

标签: vba word-vba

我为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

修改

我尝试过使用宏录制器并且我有相同的代码。 此外,该命令在录制期间处理选择,但在执行宏时在整个文档中工作。

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

1 个答案:

答案 0 :(得分:0)

问题可能是.Wrap = wdFindAsk,因为这会在搜索Selection之后启用提示,询问您是否应将搜索扩展到整个文档。但是,如果运行宏,则不会出现提示,默认为Search the whole Document,因此会检查整个文档。

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

请参阅:Wrap property