半角标点符号变为全角

如何将一篇WORD文档中的半角中文标点符号一次性变为全角的?
只能替换么?

1、查找/替换所有标点符号;
在Word中无法实现一次性查找所有标点符号,所以需要只能一个一个的将半角标点替换为全角标点,英文常用标点符号一共17个,因此最多替17次就可以完成。

中文标点符号范围(非全部):
"。" "," ";" ":" "?" "!" "……" "—" "~" "〔" "〕" "《" "》" "‘" "’" "“" "”"共17个

英文标点符号范围(非全部),对应中文标点符号:
"." "," ";" ":" "?" "!" "…" "-" "~" "(" ")" "<" ">" "'" "'" """" """"
最后四个相当于' ' " "

2、将半角变为全角;
将所有文档全部转换为全角,Ctrl+A全选文档,选择菜单中的<格式>,<更改大小写>,选中<全角>,即将所选中的半角字符转换为全角。
再次a-z, A-Z转为半角,需要26*2=52次

=====================================
上述两法比较复杂,如果需要一次性转换,可以使用Word中的宏工具来实现,如果需要,给我发信息,我有收集该工具。

该转换工具代码如下<转自ExcelHome论坛,Word版块"守柔"版主>,可以自动添加至Word中:
* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-5-20 5:30:30
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------

Sub ReplaceEnglishInterpunctionInChinese()
'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号
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
'----------------------
Sub ReplaceInStoryChinese()
'全中文段落英文标点符号替换为中文标点符号
Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant
Dim N As Byte
'定义一个中文标点的数组对象
ChineseInterpunction = Array("。", ",", ";", ":", "?", "!", "……", "—", "~", "〔", "〕", "《", "》", "‘", "’", "“", "”")
'定义一个英文标点的数组对象
EnglishInterpunction = Array(".", ",", ";", ":", "?", "!", "…", "-", "~", "(", ")", "<", ">", "'", "'", """", """")
On Error Resume Next
Application.ScreenUpdating = False '关闭屏幕更新
With ThisDocument.Content.Find
For N = 0 To 13 '进行14次循环
.ClearFormatting '清除查找格式
'查找相应的英文标点,替换为对应的中文标点
.Execute findtext:=EnglishInterpunction(N), replacewith:=ChineseInterpunction(N), Replace:=wdReplaceAll
Next
End With
Selection.HomeKey wdStory '移到文档首
With Selection.Find
.ClearFormatting '清除查找格式
.Text = """" '查找"
'如果查找成功并且在中文段落中,分别将其替换为“/”
While .Execute: Selection.Text = "“"
.Execute: Selection.Text = "”"
Wend
End With
Selection.HomeKey wdStory
With Selection.Find
.ClearFormatting '清除查找格式
.Text = "'" '查找'
'如果查找成功并且在中文段落中,分别将其替换为‘/’
While .Execute: Selection.Text = "‘"
.Execute: Selection.Text = "’"
Wend
End With
'恢复屏幕更新
Application.ScreenUpdating = True
End Sub
'----------------------
Sub ReplaceChineseInterpunctionInEnglish()
'全中文标点符号替换为英文标点符号
Dim ChineseInterpunction() As Variant, EnglishInterpunction() As Variant, N As Byte
'定义一个中文标点的数组对象
ChineseInterpunction = Array("。", ",", ";", ":", "?", "!", "……", "—", "~", "〔", "〕", "《", "》", "‘", "’", "“", "”")
'定义一个英文标点的数组对象
EnglishInterpunction = Array(".", ",", ";", ":", "?", "!", "…", "-", "~", "(", ")", "<", ">", "'", "'", """", """")
On Error Resume Next
MsgBox UBound(EnglishInterpunction)
Application.ScreenUpdating = False '关闭屏幕更新
With ThisDocument.Content.Find
For N = 0 To 16 '进行14次循环
.ClearFormatting '清除查找格式
'查找相应的英文标点,替换为对应的中文标点
.Execute findtext:=ChineseInterpunction(N), replacewith:=EnglishInterpunction(N), Replace:=wdReplaceAll
Next
End With
'恢复屏幕更新
Application.ScreenUpdating = True
End Sub
'----------------------
温馨提示:答案为网友推荐,仅供参考
相似回答