【转载】论文排版-文本从PDF等粘贴到WORD中,智能删除多余的空格和回车

临近毕业,想必小伙伴们都忙着修改论文吧,最近发现了一些不错的方法,可以帮助大家论文排版节省不少时间,希望对大家有所帮助,祝愿大家都顺利毕业,找到心仪的工作!

本文转自 Endlesswx的博客

http://blog.sina.com.cn/endlesswx123

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

功能展示:

 直接Ctrl+V与使用自定义的Alt+V的区别见下图:

【转载】论文排版-文本从PDF等粘贴到WORD中,智能删除多余的空格和回车_第1张图片

代码(灰色部分):

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后手动微调即可。

你可能感兴趣的:(【转载】论文排版-文本从PDF等粘贴到WORD中,智能删除多余的空格和回车)