写一个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,然后手动控制替换范围。

下载信息

部分资源来源于网络如有侵权,请联系删除