写一个word宏功能如下:将” ”替换为””,将”。””替换为”。”^p”,将”。”替换为”。^p”,将”。^p”^p”替换为”。”^p”,将”!”替换为”!^p”,将”!^p”^p”替换为”!”^p”,将”?”替换为”?^p”,将”?^p”^p”替换为”?”^p”,将”^p^p”替换为”^p”。其中,””(英文标点)内为需要替换的内容,但不包括””(英文标点)本身。
Sub ReplacePunctuation() Dim replacePairs As Variant Dim i As Long ' 关闭屏幕更新提高速度 Application.ScreenUpdating = False ' 定义替换数组(查找内容, 替换内容) replacePairs = Array( _ " ", "", _ "。”", "。”^p", _ "。", "。^p", _ "。^p”^p", "。”^p", _ "!", "!^p", _ "!^p”^p", "!”^p", _ "?", "?^p", _ "?^p”^p", "?”^p", _ "^p^p", "^p" _ ) ' 循环执行替换操作 For i = LBound(replacePairs) To UBound(replacePairs) Step 2 With Selection.Find .Text = replacePairs(i) .Replacement.Text = replacePairs(i + 1) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i ' 恢复屏幕更新 Application.ScreenUpdating = True MsgBox "替换完成!" End Sub
使用说明:
按 Alt+F11 打开VBA编辑器
在左侧项目窗口双击要使用的文档/模板
选择 插入 > 模块
粘贴上述代码
返回Word文档,按 Alt+F8 运行宏 “ReplacePunctuation”
注意事项:
此宏会按以下顺序执行替换:
删除全角空格
处理带引号的句尾标点
处理普通句尾标点
修正可能产生的多余换行
合并连续空行
替换范围是全文
请务必先备份文档
中文引号必须使用全角字符
替换后的换行符是Word的标准段落标记(^p)
提示:如果要保留部分原有格式,可以修改代码中的.Wrap = wdFindContinue参数为wdFindStop,然后手动控制替换范围。