ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

   
高效办公必会的Office实战技巧 永久免费,网表让Excel秒变数据库 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! 国内首部Excel函数公式学习大典 职场充电黑科技, Office微视频教程 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 突破Excel限制,用活字格提高效率 12门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
楼主: ttui

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

  [复制链接]

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2007-4-2 17:07 | 显示全部楼层

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

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 | 显示全部楼层
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, 下载次数: 756)

Hcpmijc0.rar

244.14 KB, 下载次数: 582

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

fKHgsbM9.rar

244.14 KB, 下载次数: 556

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

TA的精华主题

TA的得分主题

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

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

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

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

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

TA的精华主题

TA的得分主题

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

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

如输入函数=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 | 显示全部楼层

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

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

您需要登录后才可以回帖 登录 | 免费注册 新浪微博登陆

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天坐享新鲜教程

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

GMT+8, 2017-9-24 11:08 , Processed in 0.082988 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.3

© 2001-2017 Wooffice Inc.

   

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

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

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