|
楼主 |
发表于 2015-11-10 20:38
|
显示全部楼层
双引号共有三种形态:
1、中文弯双引号。如:祖国“花朵”鲜艳(中文全角宋体——正常)。
2、英文弯双引号。如:尽管“薯头先生”可爱(英文半角Times New Roman字体—错误)。
3、英文直双引号。如:祖国"花朵"鲜艳(英文半角Times New Roman字体——错误)。
*
解决思路(算法):
三种情况,双引号的ASC值均为34;
前两种情况,前双引号ASC值为-24144,后双引号ASC值为-24143。
第2种情况,变为全角,即为正常宋体弯双引号。
第3种情况,变为全角后,是符号“"”,ASC值为-23646。
*
解决办法:
查找ASC(34),找到三种双引号,变为全角,第1种本来就是全角变不变仍为全角,第2种变为全角变正常,第3种变为符号“"”,ASC值为-23646,查找ASC(-23646),替换为chrw(8220),变为正常中文前双引号,再查找变为chrw(8221),变为正常中文后双引号,问题解决,这种解决办法,英文弯双引号的方向决不会错;直双引号不好说,如果成对也不会错,错也只是本段错(不考虑双引号是否成对,以一个段落为局限范围)。
***下面是我针对英文双引号转中文的最新代码,请各位朋友测试、指正:
- Sub 英文双引号转中文()
- Selection.HomeKey Unit:=wdStory
- Selection.Find.ClearFormatting
- Do While Selection.Find.Execute(findtext:=Chr(34), Forward:=True)
- Selection.Range.CharacterWidth = wdWidthFullWidth
- Selection.MoveRight Unit:=wdCharacter, Count:=1
- Loop
- Selection.HomeKey Unit:=wdStory
- Selection.Find.ClearFormatting
- Do While Selection.Find.Execute(findtext:=Chr(-23646), Forward:=True)
- Selection = ChrW(8220)
- Do
- If Selection.Characters.Last.text = vbCr Then GoTo Skip
- Selection.MoveEnd Unit:=wdCharacter, Count:=1
- Loop Until Asc(Selection.Characters.Last) = -23646
- Selection.Characters.Last.text = ChrW(8221)
- Skip:
- Selection.MoveRight Unit:=wdCharacter, Count:=1
- Loop
- End Sub
复制代码 |
|