[原创并分享]中英文标点互换
时间:2005-12-02
来源:互联网
简化和优化了原代码。
Sub ToggleInterpunction()'中英文标点互换
Dim ChineseInterpunction() As Variant, EnglishInterpunction() As Variant
Dim myArray1() As Variant, myArray2() As Variant, strFind As String, strRep As String
Dim msgResult As VbMsgBoxResult, N As Byte
'定义一个中文标点的数组对象
ChineseInterpunction = Array("。", ",", ";", ":", "?", "!", "……", "—", "~", "(", ")", "《", "》")
'定义一个英文标点的数组对象
EnglishInterpunction = Array(".", ",", ";", ":", "?", "!", "…", "-", "~", "(", ")", "<", ">")
'提示用户交互的MSGBOX对话框
msgResult = MsgBox("您想中英标点互换吗?按Y将中文标点转为英文标点,按N将英文标点转为中文标点!", vbYesNoCancel)
Select Case msgResult
Case vbCancel
Exit Sub'如果用户选择了取消按钮,则退出程序运行
Case vbYes'如果用户选择了YES,则将中文标点转换为英文标点
myArray1 = ChineseInterpunction
myArray2 = EnglishInterpunction
strFind = "“(*)”"
strRep = """\1"""
Case vbNo'如果用户选择了NO,则将英文标点转换为中文标点
myArray1 = EnglishInterpunction
myArray2 = ChineseInterpunction
strFind = """(*)"""
strRep = "“\1”"
End Select
Application.ScreenUpdating = False'关闭屏幕更新
For N = 0 To UBound(ChineseInterpunction)'从数组的下标到上标间作一个循环
With ActiveDocument.Content.Find
.ClearFormatting'不限定查找格式
.MatchWildcards = False '不使用通配符
'查找相应的英文标点,替换为对应的中文标点
.Execute findtext:=myArray1(N), replacewith:=myArray2(N), Replace:=wdReplaceAll
End With
Next
With ActiveDocument.Content.Find
.ClearFormatting '不限定查找格式
.MatchWildcards = True '使用通配符
.Execute findtext:=strFind, replacewith:=strRep, Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
相关链接:
http://club.excelhome.net/viewthread.php?tid=99049&replyID=&skin=0
作者: 守柔 发布时间: 2005-12-02
收藏了,即便用,也得找楼主直接指导。
作者: 办公之星 发布时间: 2005-12-02
老大你的代码一处值得商榷:
1、如果工具\自动更正选项\键入式自动套用格式\直引号替换为双引号的勾不去掉的话,英文双引号替换为中文双引号是完不成的。
还有一处比较奇怪:把此代码先复制到Word中,再从Word复制到VBA中时,strFind = """(*)"""自动变成strFind = ""(*)"",必须要手工再添加""。strRep = "“\1”"变成strRep = ""\1"",也必须要手工改正,这是否就是老大上次所说的差别?
不如妥否?
[此贴子已经被作者于2005-12-2 9:27:26编辑过]
作者: konggs 发布时间: 2005-12-02
我这里测试,好像英文引号,无论怎么设置,都无法转换为全角的中文引号。
把下面的内容复制到word中作为测试文本:
"abcd"
"cdef"
"hijk"
"中国"
作者: gues1688 发布时间: 2005-12-03
作者: gues1688 发布时间: 2005-12-03
查了一下几个相关选项对应的属性,如下:
AutoFormatReplaceQuotes 属性
如果该属性值为 True,则当 Word 自动设置文档或区域格式时,直引号会自动更改为弯引号。Boolean 类型,可读写。
示例
本示例启用将直引号自动替换为弯引号的功能,然后自动设置当前所选内容的格式。
Options.AutoFormatReplaceQuotes = TrueSelection.Range.AutoFormat
AutoFormatAsYouTypeReplaceQuotes 属性参阅应用于示例特性
如果该属性值为 True,则键入时自动将所键入的直引号替换为弯引号。Boolean 类型,可读写。示例
本示例启用将所键入的直引号自动替换为弯引号的功能。Options.AutoFormatAsYouTypeReplaceQuotes = True
作者: gues1688 发布时间: 2005-12-03
你可以这样,
With ActiveDocument.Content
End With
作者: konggs 发布时间: 2005-12-03
好像论坛的字体设置不是很好。中英文设置不是特别顺。
像www.DEEPIN.org的论坛设置非常美观,请版主看看参考一下。
[此贴子已经被作者于2006-11-6 9:25:17编辑过]
作者: zjfangbo 发布时间: 2006-11-06
如果能考虑到排除千分位的代码就更好了!
作者: billdon 发布时间: 2006-11-24
非常高兴又得到好东西
老大,我在测试时用起来非常方便,但也有个小问题不明白,当我只有一个英文句号时转成中文句号可以的,但连续的,如“.............”转中文时不成功啊
作者: gao2ming1 发布时间: 2007-05-18
好东东,收下了,谢谢楼主!!!
作者: narutoshyb 发布时间: 2007-05-24
代码怎么使用啊,放在哪里运行啊,
我是新手,请指教
作者: 寻找殒梦 发布时间: 2007-06-08
作者: studio86 发布时间: 2008-03-28
作者: taigaoxiao 发布时间: 2008-03-28

作者: hpw 发布时间: 2008-03-28
作者: bibisin 发布时间: 2009-06-10
果然藏龙卧虎哦
作者: coopercool 发布时间: 2009-08-17
作者: Ericall 发布时间: 2011-05-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28