今天做一个统计表,里面很多全角的数字、全角的英文字母,看得我很烦了,难懂我要用 ctrl+F 挨个挨个替换我的天,那样子效率也太低了吧. 下面有两个方法供你参考,自带的方法比较简单,高版本才行,低版本的同学,用你的宏去吧。
方法一:通过 word 自带的功能
对于 word2007,word2010,word2013 等高版本等高版本要实现半角和全角的转化和全角到半角的转化,简直是太简单了。
第一步,选中你要更改的文件内容,全选 ctrl+A;
第二步,“开始” 选项卡,找到字体旁边有个 Aa 的标示,然后单击,出现下拉菜单 (如图所示)
选中 “半角” 就全部转换成半角
选中全角就转换成全角,当然还有什么大小写转换,简单多了。

方法二:通过宏的方式实现
这不想到了 word 的宏处理,一下子不就可以解决这个问题了吗?问题分为两个步骤解决,首先是录制宏,然后是运行宏。
一、录制宏
1、word2003 中。执行 “工具”→“宏”→“录制新宏...”,在 “宏名” 框中输入 “数字全角转半角”,确定,将出现一个 “录制宏” 工具栏,关闭它。
执行 “工具”→“宏”→“宏...”,选择 “数字全角转半角”,单击 “编辑” 按钮,打开 vba 编辑窗口,录入代码
2、word2007,word2010,word2013 等高版本中。视图---> 宏-->l 录制宏,输入宏名后关闭。然后 视图---> 宏--> 查看宏---> 编辑,输入宏代码,然后保存。

二、宏代码如下:
Sub 全角转半角 ()
Dim qjsz, bjsz As String, i As Integer '定义 qjsz(全角数字)、bjsz(半角数字) 为字符串型,i 为整数型
qjsz = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bjsz = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To 62 '循环 62 次
With Selection.Find
.Text = Mid(qjsz, i, 1) 'mid 函数:返回文本字符串中从指定位置开始的特定数目的字符,每次取一个数字
.Replacement.Text = Mid(bjsz, i, 1) '将用于替换的相应位置的半角数字
.Format = False '保留替换前的字符格式
.Execute Replace:=wdReplaceAll '用半角数字替换全角数字
End With
Next i
End Sub
三、如何替换全角到半角 (运行宏)
选中全部文字,快捷键 ctrl+A
word2003:执行 “工具”→“宏”→“宏...”→“数字全角转半角”
word2007,word2010,word2013 等高版本:视图--->宏---->→“数字全角转半角” 运行
