ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[解决多音字]汉字转拼音的完美解决方案[12.11.29更新]

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-2 09:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:文本转换
mfc我不会,我用delphi
加空格也不难,只要改下程序,转换时一个自一个的转,结果间插入空格,因为word的拼音指南也是一个字一个字转的,ifelanguage没有提供加入分隔符的功能。
至于获得笔画数现在还是不行,因为微软拼音2.0没有实现这个功能,3.0还没看,等有时间再说了
其实本想写成个类的不过考虑到可能有人不会用就写成了函数,写成类可以获取接口后先不释放,效率高些,
有需要的尽管改代码吧,多些关注:)

TA的精华主题

TA的得分主题

发表于 2007-4-2 13:55 | 显示全部楼层

TA的精华主题

TA的得分主题

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

问一下  汉字转拼音的完美解决方案  的大哥,能不能只显示拼音,不加音调......

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-2 17:19 | 显示全部楼层
音调是微软拼音自动给加上的。如果返回结果是ao4这样的结果比较方便处理,只要将最后一个字符丢掉就可以了。如果结果是ào这样的,那就需要建立一个转换表,将à之类的字符替换掉。能够实现,就是麻烦些。

刚刚看了下office2007带的微软拼音,由汉字得到笔画的功能依然没有完成,现在用IFELanguage还是没办法得到笔画。
在发发牢骚,japanese的笔画,注音什么的早就有了,ms对简体中文世界还是不够重视啊
ào
ào

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-3 11:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-4-3 13:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用ttui在2007-3-30 10:05:02的发言:

汉字转拼音的完美解决方案~
err...至少是比较完美
经测试在office xp,2003,2007通过。

'***************************************************************************
关键字:汉字 注音 拼音 IFELanguage vba DispCallfunc OLE


在废话一下,用windows ime api也可以实现汉字到拼音,但是在WINPY.ime中有个bug,
而且在2000 sp4~xp sp2一直存在,就是必须要将winnt\system32\winpy.mb考到系统盘根目录下才行。
这个bug存在了如此长的时间,估计是MS有意为之,鄙视一下。

2007.04.03更新了一下,真对大家提出的要求加入了拼音间加入分隔符和去掉注音的功能,并改成了类,以方便使用。
请参照“模块1”中的例子,用起来很简单:)
更正了在Function IFELanguage_GetMorphResult中的一个错误,redim时vba数组默认起始搞错了

更新后的文件:
G3HPpttC.rar (205.12 KB, 下载次数: 974)


Hcpmijc0.rar

244.14 KB, 下载次数: 749

汉字转拼音的完美解决方案~(4.3更新)~加入实用功能&Bugfix

fKHgsbM9.rar

244.14 KB, 下载次数: 740

汉字转拼音的完美解决方案~(4.3更新)~加入实用功能&Bugfix

TA的精华主题

TA的得分主题

发表于 2007-4-3 13:43 | 显示全部楼层

另外,我的文件除了在拼音之间增加了一个空格,同时还能保留原来文字中的其它字符。

(楼主把非汉字都直接去掉了,也好也不好。)

只是,为了防止在转化为民国拼音时把英文字母转化掉,我把英文字母都改成大写了。

还有,我的电脑是日文环境的,所以,使用的宏代码中都没有直接使用汉字,都是用的双字节码。

TA的精华主题

TA的得分主题

发表于 2007-4-3 13:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

建议楼主的分隔符不要固定,可以作为可选参数直接加在函数里,默认为""空字符即没有分隔。

如输入函数=HzToPy(A3,"-"),则结果为:

改成类了=gǎi-chéng-lèi-le

如输入函数=HzToPy(A4," "),则结果为:

加入分隔符=jiā rù fēn gé fú

Public Function HzToPy(Hz As String, Optional SC = "") As String
    Dim hp As HZ2PY
    Set hp = New HZ2PY

    'hp.Seperator = "」ュ" 这句被改动为如下

hp.Seperator = SC


    hp.UseSeperator = True
    HzToPy = hp.GetPinYin(Hz)
    HzToPy = hp.AdjustPhoneticNotation(HzToPy, pnNoNotation)
    Set hp = Nothing
End Function

[此贴子已经被作者于2007-4-3 13:59:48编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-3 14:03 | 显示全部楼层

我的文件中,选定文本右侧单元格后按ctrl+s可以自动把文本逐字区分并给出其unicode双字节码的。

TA的精华主题

TA的得分主题

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

把楼主的拼音转化为无注音声调符的英文字母的函数,虽然很简单,但挺烦的。

Function EP(HanZiPinYin)
    P = HanZiPinYin
   
    P = Replace(P, ChrW(257), "a")
    P = Replace(P, ChrW(225), "a")
    P = Replace(P, ChrW(462), "a")
    P = Replace(P, ChrW(224), "a")
   
    P = Replace(P, ChrW(275), "e")
    P = Replace(P, ChrW(233), "e")
    P = Replace(P, ChrW(283), "e")
    P = Replace(P, ChrW(232), "e")
   
    P = Replace(P, ChrW(299), "i")
    P = Replace(P, ChrW(237), "i")
    P = Replace(P, ChrW(464), "i")
    P = Replace(P, ChrW(236), "i")
   
    P = Replace(P, ChrW(333), "o")
    P = Replace(P, ChrW(243), "o")
    P = Replace(P, ChrW(466), "o")
    P = Replace(P, ChrW(242), "o")
   
    P = Replace(P, ChrW(363), "u")
    P = Replace(P, ChrW(250), "u")
    P = Replace(P, ChrW(468), "u")
    P = Replace(P, ChrW(249), "u")
   
    P = Replace(P, ChrW(252), "v")
    P = Replace(P, ChrW(470), "v")
    P = Replace(P, ChrW(472), "v")
    P = Replace(P, ChrW(474), "v")
    P = Replace(P, ChrW(476), "v")
   
    EP = P
End Function

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 12:38 , Processed in 0.046853 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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