zoukankan      html  css  js  c++  java
  • word中利用宏替换标点标点全角与半角

    Alt+F11,然后插入-模块:

    复制下面代码到编辑窗口:

    Sub 半角标点符号转换为全角标点符号()
    '中英互译文档中将中文段落中的英文标点符号替换为中文标点符号
        Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant
        Dim MyRange As Range, N As Byte
        '定义一个中文标点的数组对象
        ChineseInterpunction = Array("", "", "", "", "", "", "……", "", "", "", "", "", "", "", "", "", "")
        '定义一个英文标点的数组对象
        EnglishInterpunction = Array(".", ",", ";", ":", "?", "!", "", "-", "~", "(", ")", "<", ">", "'", "'", """", """")
        On Error Resume Next
        Application.ScreenUpdating = False    '关闭屏幕更新
        For Each i In ThisDocument.Paragraphs    '遍历文档每个段落
            If Asc(i.Range) < 0 Then    '如果段落首个字符为汉字(汉字字符的ASC<0)
                '定义一个RANGE对象
                For N = 0 To 13    '进行14次循环
                    Set MyRange = i.Range    '定义一个RANGE对象
                    With MyRange.Find    '查找
                        .ClearFormatting    '清除查找格式
                        '查找相应的英文标点,替换为对应的中文标点
                        .Execute findtext:=EnglishInterpunction(N), replacewith:=ChineseInterpunction(N), Replace:=wdReplaceAll
                    End With
                Next
            End If
        Next
        Selection.HomeKey wdStory
        With Selection.Find
            .ClearFormatting    '清除查找格式
            .Text = """"    '查找"
            '如果查找成功并且在中文段落中,分别将其替换为“/”
            While .Execute
                If Asc(Selection.Paragraphs(1).Range) < 0 Then Selection.Text = ""
                If .Execute And Asc(Selection.Paragraphs(1).Range) < 0 Then Selection.Text = ""
            Wend
        End With
        Selection.HomeKey wdStory
        With Selection.Find
            .ClearFormatting    '清除查找格式
            .Text = "'"    '查找'
            While .Execute
                '如果查找成功并且在中文段落中,分别将其替换为‘/’
                If Asc(Selection.Paragraphs(1).Range) < 0 Then Selection.Text = ""
                If .Execute And Asc(Selection.Paragraphs(1).Range) < 0 Then Selection.Text = ""
            Wend
        End With
        '恢复屏幕更新
        Application.ScreenUpdating = True
    End Sub

    然后Alt+F8,选择刚刚添加的宏,并运行:

    ---分割线---

    还有另一段代码,简洁一些:

    Sub 全角转换为半角()
        '使用前需先选中要替换的区域
        Dim fullshape, halfshape As String, i As Integer '定义fullshape(全角)、halfshape(半角)为字符串型,i为整数型
        fullshape = ",。?“”‘’!:;"
        halfshape = ",.?""''!:;"
        For i = 1 To 10 '循环10次
        With Selection.Find
        .Text = Mid(fullshape, i, 1) 'mid函数:返回文本字符串中从指定位置开始的特定数目的字符,每次取一个标点符号
        .Replacement.Text = Mid(halfshape, i, 1) '将用于替换的相应位置的半角标点符号
        .Format = False '保留替换前的字符格式
        .Execute Replace:=wdReplaceAll '用半角标点替换全角标点
        End With
        Next i
        End Sub
  • 相关阅读:
    一文解读RESTful (转)
    一文解读Redis (转)
    一文解读JSON (转)
    一文解读单点登录 (转)
    一文解读雪碧图 (转)
    一文解读骨架屏 (转)
    一文解读MPA/SPA(转)
    一文解读HTTP2 (转)
    一文解读HTTP (转)
    HTML5中Video标签无法播放mp4的解决办法
  • 原文地址:https://www.cnblogs.com/Jay-CFD/p/5915513.html
Copyright © 2011-2022 走看看