ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 守柔拼音居士-汉字拼音Word COM 加载项安装程序下载

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-4 09:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 guanlan 于 2009-3-4 09:00 发表
守柔版主辛苦了!
速度非常快!这是我使用过的拼音软件中所不曾见过的,校对很方便了。
几个问题或建议:
1.碰到汉字和阿拉伯数字交替的时候,会不予注音,如图。
2.无法调整拼音字号的大小。
3.拼音和汉字的间 ...

谢谢guanlan兄的建议和意见!
问题1可能比较麻烦,就是我所谓的WORD中文断词的问题,事实上,当我们使用FOR EACH 在 RANGE的Words中遍历访问时,所有Words的连接结果与原RANGE对象中的文本是有差异的,有重复的标点等,也有没有取得的漏掉的词组部分(中文),这是Word 的BUG,可能需要时日。
字号大小应该可调的,你可以选择一个字号,如图,我设置了拼音为20号字的结果。拼音与汉字间的距离原来是设置为最优距离,但考虑实际情况,当下设置为拼音字号并上调3磅,如拼音为12磅时,间距为15磅。
速度,昨天为了验证代码的执行效率,光反复修改代码和测试花了近一天时间,总体速度还可以,实测8000个虚拟汉字,用时为2分30S,当文档中的词组越多时,词库中的词组也越多时,速度反而可能会更快一些。
“g"的问题,可能是原字库与后来的词库拼接过程,我未予检查。事实上,从王码逆转换过来的词组,所有拼音是无效的(不含声调),所以全部删除,只是保留的汉字词组,而这些词组,有些在Word中是识别为词组的,有些则不是,所以,先要检测这部分词组,符合的留下,重复的删除,最后,再通过Word自带的拼音指南,为词组标注,再作整理,整个字词库处理约花了一天时间。
请guanlan兄对字号再作测试一下,我马上修订。
py.jpg

TA的精华主题

TA的得分主题

发表于 2009-3-4 12:38 | 显示全部楼层
谢谢分享,学习中。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-4 13:29 | 显示全部楼层
修订后的“拼音居士V 1.6"版本如下,欢迎测试并提出修改建议。

请至1楼下载最新安装程序。

[ 本帖最后由 守柔 于 2009-3-8 09:34 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-3-4 16:09 | 显示全部楼层
现代很好了,就剩下有些汉字不注音的问题了,这个问题解决了,应该说就比较完美了。我在使用别的拼音软件时没有碰到过这个问题,但我对编程什么的完全外行,所以说不出个道理来。
比较奇怪的是:书名号里的汉字不注音(试过了几个都是不注音的),引号(包括单引号、双引号)里的汉字有的注音有的不注音(见图),这个我不知道是怎么回事。

[ 本帖最后由 guanlan 于 2009-3-4 16:29 编辑 ]
未命名.JPG

TA的精华主题

TA的得分主题

发表于 2009-3-4 16:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-4 16:36 | 显示全部楼层
guanlan兄:
这便是我在README中所说的,Word中文断词的BUG,在Word中,部分文字位于某些空格、标点中时,Word有时会将其识别为一个词组,而有识则无法识别为词组,更有甚者,在遍历时,只有标点符号而没有其间的内容。
简单的识别方法,在Word中,双击某个词组,假如选定部分包含引号(或者其它标点符号,有时并不一定必须是中文标点)时,它作为整个词组时,由于结构过于复杂(标点符号和空格等,很难一一枚举或者规律),如果程序中一一加以识别,则速度大大影响。
你在文档中随意写一段中文,可以包含标点空格等等,使用下面的代码测试一下就知道了:
Sub WordBug()
    Dim i As Range
    Dim wdString As String
    For Each i In ActiveDocument.Content.Words
        wdString = wdString & i.Text
    Next
    Word.Documents.Add.Content.Text = wdString
End Sub
原文档中的一个中文标点句号,可能被识别了两次。

TA的精华主题

TA的得分主题

发表于 2009-3-4 17:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-4 21:04 | 显示全部楼层
我更可怜,处理到99%出现错误,看不到结果。不过对于引号中标音的情况,我已经做了处理。http://club.excelhome.net/thread-402885-1-1.html,附件中修正了一些错误,不知版主看了没有。其他情况可以大约依次进行。毕竟类似的情况在一篇文章中很少。速度上影响不会很大。不过,比较一下速度,和我的代码好像差不多。

[ 本帖最后由 wjhere 于 2009-3-4 22:21 编辑 ]

错误

错误

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-5 10:12 | 显示全部楼层
原帖由 wjhere 于 2009-3-4 21:04 发表
修正了一些错误,不知版主看了没有。其他情况可以大约依次进行。毕 ...


to wjhere兄:
我一般不喜欢在编程时看别人的程序,怕影响自己的思路,倒不是说自己的思路一定是最好的。昨天我看过你的代码,也回复了您的短信。只能说,你我处理的思路大致相同,但细节方面相差甚大,比如,你使用的是与我先前的一致的插入域的方法,而我不是通过插入域的方法,如果您是行家,运行一下这个加载项后,检查一下撤消框中的内容便知道了,其二,遍历的方式不同,我是固定的,你是倒序的;其三,数据库的读写不同等等,您最近新改的,我还没有时间去看。
关于错误,可否将你的测试文档上传,我测试一下,谢谢。
针对标点符号的问题,我重新更新了代码,最新的附件(V1.7版)如下,供大家测试:
但是如“3月4日上午”这类词组,目前无法加注拼音。
请至1楼下载最新安装程序。

[ 本帖最后由 守柔 于 2009-3-8 09:34 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-3-5 12:32 | 显示全部楼层
版主客气了,1.7版在我的机子上面还是出错。可能是水土不服吧。我也有同样的体会,还是直接调用拼音指南比较快。下面是我的程序的效果图,和错误提示。
ss.jpg
rr.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 02:31 , Processed in 0.049201 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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