新浪博客

word VBA 替换功能

2015-04-01 18:49阅读:
有时候替换的时候,只需要替换文档的一部分内容,但是执行直接录制的宏​一般会把全文都替换了 。好久都没有解决这个问题,感觉实在不方便。今天找到了原因:​
就是​Execute 方法(Find 对象)的Wrap属性:
Wrap Variant 类型,可选。如果搜索从不是文档开头的位置开始,并到达文档末尾(如 Forward 设置为 False,则相反),用本参数控制接下来的操作。当在选定内容或区域中没有找到搜索文字时,本参数也控制接下来的操作。可以是下列 WdFindWrap 常量之一:
常量 描述
wdFindAsk 搜索完所选内容或者区域后,Microsoft Word 会显示一条消息,询问是否搜索文档的其他部分。
wdFindContinue 到达搜索区域的开始或者结尾时,继续执行查找操作。
wdFindStop 到达搜索范围的开始或者结尾时,停止执行查找操作。
来自http://zhidao.baidu.com/link?url=ReKPDbbHsGyESZ4PuCbYR1XuzkmxZsDJCz9tB09Oxv4uGS9OXi3ORSbAbQ1vLefH1uHJ3iuBc66lviG_Fa6nY49uCwj11fOjBpDmgOcM7Cm
以下是替换段落标记为空格的代码,只需要把录制的宏的.Wrap =wdFindAsk 换成 .Wrap = wdFindStop
故代码为:
Sub 替换换行符()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
.Text = '^p'
.Replacement.Text = ' '
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

我的更多文章

下载客户端阅读体验更佳

APP专享