Word 2010替换功能非常强大,最近将PDF文件中的文本 copy 到 Word 进行整理时发现里边有很多的段落标记,一个一个替换非常麻烦,于是就想录制一个宏,偷偷懒!
录制宏
选中需替换的文本内容,点击视图>>宏>>录制宏>>设置“宏名”,确定,开始录制过程:"ctrl+H"调出“替换”对话框,在“查找内容”中输入“^p”,在“替换为”中留空,点击“全部替换”,跳出“word已完成对所选内容的搜索,是否搜索其余部分”,选“否”,点击“视图>>宏>>停止录制”。
完成录制后,当然要检测一番了。先选中需要替换的文本内容,点击运行宏,眼睛一睁一闭,居然整个文档的段落标记都被替换了!
到底是为什么呢?从表现来看初步估计是在宏录制过程中最后一步出了问题。
代码修正
打开编辑器查看代码:
With Selection.Find
.Text = "^p"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
注意到.Wrap = wdFindAsk,将其改为 .Wrap = wdFindStop,如下所示:
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
重新选中一段文本,运行宏,完美!!!
总结原因:宏录制时并不能完美地把操作转化为代码,所以存在Bug。所以,最稳妥的做法是录制之后先测试一番,表现无误后再开始庆祝吧!