文本从PDF等粘贴到WORD中,智能删除多余的空格和回车

转载:
http://blog.sina.com.cn/s/blog_51817ae50102w8id.html
作者博客地址http://blog.sina.com.cn/endlesswx123
自用,侵权请联系willeoncheung@gmail.com删除

以下是原文:
大家是否有这样的经历,从PDF或网页中复制一段文字再粘贴到WORD中,会出现很多多余的空格和回车,一个一个去删除费时费力费心。下面的代码是写来自己用的,觉得节省了不少时间,不妨分享给大家试试。

功能展示:
直接Ctrl+V与使用自定义的Alt+V的区别见下图:
[源码]文本从PDF等粘贴到WORD中,智能删除多余的空格和回车
代码(灰色部分):
Sub 粘贴并替换空格和回车()


**** Dim Flag As Integer****


**** '粘贴并选中****
**** startpos = Selection.Start****
' Selection.Paste '普通粘贴
**** Selection.PasteAndFormat (wdFormatPlainText) '粘贴为文本****
**** Selection.Start = startpos****


**** With Selection.Find****
**** .text = "[  ^s]" '括号里依次:半角空格、全角空格、s指不间断空格(注意w:空白区域不能选择全角空格)****
**** .Replacement.text = ""****
**** .MatchWildcards = True '使用通配符****
**** .Execute Replace:=wdReplaceAll****
**** End With****


**** '先将多个回车并为一个****
**** With Selection.Find****
**** .text = "^13{2,}"****
**** .Replacement.text = "^p"****
**** .MatchWildcards = True '使用通配符****
**** .Wrap = wdFindStop '把 .Wrap = wdFindAsk 改成 .Wrap = wdFindStop对应于“是否搜索其余部分”中的“否”****
**** .Execute Replace:=wdReplaceAll****
**** End With****


**** '主要针对最后是两个回车的特殊情况这种特殊情况下,替换后少选择一位字符,影响后续操作****
**** If Selection.text Like "[!。??!!”:;]" & Chr(13) Then***
**** Flag = 1****
**** End If****
**** '再将前面不是句号的回车删除****
**** With Selection.Find****
**** .text = "([!。??!!”:;])^13"****
**** .Replacement.text = "\1"****
**** .MatchWildcards = True '使用通配符****
**** .Wrap = wdFindStop '把 .Wrap = wdFindAsk 改成 .Wrap = wdFindStop对应于“是否搜索其余部分”中的“否”****
**** .Execute Replace:=wdReplaceAll****
**** End With****


**** If Flag Then****
**** Selection.MoveLeft unit:=wdCharacter, Count:=-1, Extend:=wdExtend '取消选定最后一个回车符****
**** End If****


**** '清除替换的内容****
**** Selection.Find.Replacement.text = ""****
End Sub

使用方法:
第一步:录制一个宏(主要为了创建NewMacros模块,以前录制过的请跳过此步)
03:工具→宏→录制新宏→确定→单击“停止”按钮
10:单击WORD状态栏的录制宏按钮(或开发工具→录制宏)→确定→单击“停止”按钮

第二步:ALT+F11(打开VBA对话框)
将以上代码粘贴到打开的NewMacros模块中

第三步:为“粘贴并替换空格和回车”这个宏定义快捷方式
03:工具→自定义→键盘→命令类别:宏→改为Alt+V(快捷键视个人喜好自定义)
10:文件→选项→自定义功能区→自定义键盘→命令类别:宏→改为Alt+V

注意:
程序遇到标题格式时,由于标题格式末尾没有标点符号,会与其下第一段合并,Alt+V后手动微调即可。

posted @ 2021-03-18 11:31  vliamzh  阅读(850)  评论(0编辑  收藏  举报