ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 28645|回复: 44

[求助]Word 中怎样实现中文、半角字符间自动加一个空格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-8-1 17:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请教大家如何在word里实现中英文字符间空一格(即,未空格的空一格,多于一格的只保留一格)。中英文字符、全半角字符、中文及英文括号之间都要实现空一格。

 对全文进行搜索,处理以下几种情况:

1. 在中文(即全角字符)与英文(半角字符)之间空一格:未加空格的加一个空格,有多于一个空格的变成只有一个空格。

2.中文标点符号前后遇到英文无需空格

3.英文标点中的“(”“)”前后遇到中文字,有时需要空,有时不需要空【大家只需写出一种,另一种我可以自己模仿改编】

4. 举例:

在Media Selector中选择New,

经以上3条条件匹配、处理后,应该变成——>

   Media Selector   中选择   New,

我本职是做翻译的。只因为有点计算机基础,老板就把我当程序员使。我很苦恼,请各位帮帮我吧!!感激不尽!!

-------------------------------------------------
-------------------------------------------------

每个程序在编写时,作者均配有详细注释以供参考和学习。现详列如下:

6 楼为程序雏形;将其中的 ThisDocument 改为 ActiveDocument 即可
仅实现要求的空格处理,不对文档进行标记,也不对错误进行归类、统计以及输出检查报告

29 楼程序成型;先右击“normal”,选插入-模块,再将附件文档中Thisdocument模板的代码全部复制到新建的模块中,然后将代码顶部的两个“Public”改为“Dim”
按要求进行空格处理,且对文档进行分类标记,同时将错误归类、统计,并输出明细检查报告

38 楼程序完善。<—— 精华帖所在
有弹出对话框询问,可选择【按要求进行空格处理,且对文档进行分类标记,同时将错误归类、统计,并输出校对明细记录】或【只检查,将检查结果输出为简单的检查记录】

PS:可将过程Sub myreplace()部分中的
If mychoose = 7 Then .Execute Replace:=wdReplaceOne
修改为(原文档不作任何更改)
If mychoose = 7 Then .Execute Format:=False, replacewith:="^&", Replace:=wdReplaceOne
或者修改为(只对原文档有问题处加上颜色标记)
If mychoose = 7 Then .Execute replacewith:="^&", Replace:=wdReplaceOne

[此贴子已经被作者于2007-8-10 9:07:24编辑过]

TA的精华主题

TA的得分主题

发表于 2007-8-1 17:33 | 显示全部楼层
QUOTE:
以下是引用Violet_trans在2007-8-1 17:19:27的发言:

请教大家如何在word里实现中英文字符间空一格(即,未空格的空一格,多于一格的只保留一格)。中英文字符、全半角字符、中文及英文括号之间都要实现空一格。

我本职是做翻译的。只因为有点计算机基础,老板就把我当程序员使。我很苦恼,请各位帮帮我吧!!感激不尽!!

上面红色加粗的文字意思不好理解,是什么与什么之间?这点很重要,楼主还是分别单独列出吧。

TA的精华主题

TA的得分主题

发表于 2007-8-1 17:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-8-1 17:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

赞成版主意见。我想楼主还是加上标题性文字吧,感觉只有“求助”两字是很不够的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-2 09:35 | 显示全部楼层
帖子已经修改了。应该明确了些,请各位高手帮帮忙!

TA的精华主题

TA的得分主题

发表于 2007-8-2 10:55 | 显示全部楼层

请测试如下代码是否可行:

Sub test()
'假设最终文档没有两个以上连续的半角空格
    Application.ScreenUpdating = False
    Dim myfindtext() As Variant, myreplacetext() As Variant, i As Integer
    myfindtext = Array("([^32-^127])([一-龥])", "([一-龥])([^32-^127])", "^32{2,}", _
        "([一-龥])\(", "([一-龥])(\))", "\(([一-龥])", "(\))([一-龥])")
    myreplacetext = Array("\1^32\2", "\1^32\2", "^32", "\1^32(", "\1^32\2", "(^32\1", "\1^32\2")
    For i = 0 To UBound(myfindtext)
        With ThisDocument.Content.Find
            .ClearFormatting
            .MatchWildcards = True
            .Execute findtext:=myfindtext(i), replacewith:=myreplacetext(i), Replace:=wdReplaceAll
        End With
    Next
    Application.ScreenUpdating = True
End Sub

[此贴子已经被作者于2007-8-2 10:57:03编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-2 14:56 | 显示全部楼层

非常感谢楼上!!

但是运行后没什么变化好像

[em06]

能不能再帮我看看!!谢谢!!

还有下面这段程序,可以对选定文字实现多余空格删除,但是删了之后,格式会乱。哪位高手帮我看看,如何在它的基础上实现格式不会乱,且可以自动对全文操作啊!?谢谢!!

Sub DeleteBlank()
Dim str, StrTemp, str_out As String
Dim i As Integer
Dim strch As String * 1
str = Selection.Text
StrTemp = Trim(str)
For i = 1 To Len(StrTemp)
strch = Mid$(StrTemp, i, 1)
If Not (strch = " " And Right$(str_out, 1) = " ") Then
str_out = str_out & strch
End If
Next i
Selection.Text = str_out
End Sub

TA的精华主题

TA的得分主题

发表于 2007-8-2 15:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用Violet_trans在2007-8-2 14:56:19的发言:

非常感谢楼上!!

但是运行后没什么变化好像

[em06]

能不能再帮我看看!!谢谢!!

还有下面这段程序,可以对选定文字实现多余空格删除,但是删了之后,格式会乱。哪位高手帮我看看,如何在它的基础上实现格式不会乱,且可以自动对全文操作啊!?谢谢!!

我这里运行是有变化的。也许是用ThisDocument的原因吧,可将其改为ActiveDocument试试。

最后那个问题,我想最好有实际文档看看怎么个乱法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-3 09:17 | 显示全部楼层

太感谢sylun了!!!改成 ActiveDocument 之后,真的可以了!!

现在就是多于空格没有处理。昨天说的格式变动,是这样的:

由于我是做翻译的,常使用的翻译工具是 Trados,它会嵌入 Word 里,在打开隐藏文字的条件下,可以显示一段源语一段该源语的译文(如果已翻译)。这些源语和译文之间,以一些紫红色的小标记彼此区分。当运行我所提供的那段代码后,全篇文字都变成了文章起始处那种紫红色小标记的格式和色彩了。

我不知道附上文件,您的 Word 是否能跟我的显示相同。麻烦您了!!!!感激之情,难以言述!(另:我不知道怎么附上示例文件……)

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-3 09:36 | 显示全部楼层

而且!!!我发现您的这个程序也可以处理多个空格的问题啊!!但是中文与中文之间,以及英文与英文之间如果原来有空格或多于一个空格的,运行这个程序后,会保留一个空格。

我想问一下,这个程序还能不能通过添加某些语句,一并实现中文(全角)之间无空格,半角之间无空格吗?或者,在替换时,可以询问一下或者不替换直接写成报告输出??

谢谢谢谢!!!!

[em04]
[此贴子已经被作者于2007-8-3 10:32:25编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 13:32 , Processed in 0.032860 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表