临近毕业,想必小伙伴们都忙着修改论文吧,最近发现了一些不错的方法,可以帮助大家论文排版节省不少时间,希望对大家有所帮助,祝愿大家都顺利毕业,找到心仪的工作!
大家是否有这样的经历,从PDF或网页中复制一段文字再粘贴到WORD中,会出现很多多余的空格和回车,一个一个去删除费时费力费心。下面的代码是写来自己用的,觉得节省了不少时间,不妨分享给大家试试。
功能展示:
直接Ctrl+V与使用自定义的Alt+V的区别见下图:
代码(灰色部分):
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后手动微调即可。
网友评论