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
时间: 2024-08-05 11:25:02

word中利用宏替换标点标点全角与半角的相关文章

word 文档操作类,可以读出word中书签 批量替换内容,直接调用

using System;using System.Collections.Generic;using System.Text;using Word = Microsoft.Office.Interop.Word; namespace ELO.BLL{ /* * Description:用于Word基本操作类 */public partial class Helper_Word { #region 私有成员 private Word.ApplicationClass _wordApplicati

使用word中的宏实现选中指定类型表格,并且批量修改样式结构

使用word中的宏实现选中指定类型表格,并且批量修改样式结构 Sub SelectAllTables() ' ' SelectAllTables 宏 选中所有表格 ' ' Dim tempTable As Table Application.ScreenUpdating = False '判断文档是否被保护 If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then MsgBox "文档已保护,此时不能选中多个表格!" E

SQL Server中利用正则表达式替换字符串

原文:SQL Server中利用正则表达式替换字符串 建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255),

c# 替换所有中文、标点符号,全角转半角

private void btnStart_Click(object sender, EventArgs e) { var srcWords = ToDBC(txtSrc.Text.Trim()); var placeStr = Regex.Replace(srcWords, @"([\p{P}*])", " "); placeStr = Regex.Replace(placeStr,@"([\u4e00-\u9fa5])", "&qu

刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK

简体汉字编码方案(GB2312.GBK.GB18030.GB13000)以及全角.半角.CJK 一.概述 1. 英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256).但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符. 于是当计算机被引入到中国后,相关部门设计了GB系列编码("GB"为"国标"的汉语拼音首字母缩写,即&q

js对全角与半角的验证,相互转化以及介绍

1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中,字母和数字等与汉字一样占据着等宽的位置. 半角:是指一个字符占用一个标准的字符位置.半角占一个字节. 半角就是 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母.数字和字符都是半角的. 每个半角字符只占用一字节的空间(一字节有8位,共256个编码空间).汉语.日

详解全角和半角的转换

最近在项目中遇到一个问题,客户上传的文件无法下载下来,经过定位发现原来客户上传的文件名中包含很多全角字符导致无法解析,找不到对应的文件,其实文件是真实存在的,只是用的上传下载组件不支持全角字符的文件名,从而导致文件找到不到,无法下载. 所以本人就对全角和半角进行了一些分析和总结以及它们之间用java代码是如何进行转换的经验同各位园友进行分享,希望大家共同学习,共同进步,不足之处,请大家不吝指出. 好了,进入正题......... 全角和半角简介 全角是一种电脑字符,且每个全角字符占用两个标准字符

C#全角和半角转换

在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角".在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母.符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理:而在全角状态,它们又可作为中文字符处理.半角和全角切换方法:单击输入法工具条上的 按钮或按键盘上的Shift+Space键来切换. (1)全角--指一个

JS如何判断文字是全角还是半角(转载)

转载自:http://www.php.cn/js-tutorial-362638.html 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节.半角:是指一个字符占用一个标准的字符位置.半角占一个字节.接下来通过本文给大家介绍JS验证全角与半角及相互转化的知识,需要的朋友参考下吧 1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-8