Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,Office培训学习的最佳社区
设为首页收藏本站|繁體中文 切换到窄版

Excel Home论坛

 找回密码
 免费注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

魔方网表,Excel终结者,永久免费 Excel服务器2010软件和教程下载 菜鸟啃Excel: 样章试读
Excel不给力? 何不试试FoxTable! 2012年Excel免费培训班2-6月开课计划 新人必读:ExcelHome最佳学习方法 免费下载Excel行业应用视频教程
精粹:成为Excel高手的捷径 免费下载39集新Excel精粹视频教程 免费学习Excel数据透视表视频教程 入门必看《循序渐进学Excel》视频
Excel辅助工具的巅峰之作--Kutools 免费学习Excel 2007精粹视频教程 Office Tab,Office界面的革命性创新 搞不定老板要的报表?我们来帮您
  • 507财富
  • 5鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    1352
    帖子
    79
    精华
    4
    分享
    0
    1
    发表于 2007-3-30 10:05:02 |只看该作者 |倒序浏览 |(楼主)

    [解决多音字]汉字转拼音的完美解决方案[11.09.29更新]   [复制链接]

    本帖最后由 ttui 于 2011-12-6 12:00 编辑

    请首先确认安装了微软拼音输入法,如果出现注音错误的情况,可尝试安装最新版本微软拼音解决。

    [11.09.29]更新
    根据dul版的分析,加入了运行环境检查,没有运行环境的话会提示安装微软拼音。

    [11.09.23]更新
    4年来不断有人问多音字的问题,这次更新终于解决了,由于写了这个函数之后我就从来没用到过,遇到些问题就放下了,一拖就这么久,要不是不断有人给我发消息可能就不会再有这次的更新了,还要感谢大家的使用和督促,让各位久等了。
    更新后,“重庆重要”能够正确解析为“chóng qìng zhòng yào” 。
    这次重写了很多代码,没有过多测试不知道有没有bug,发现bug的同学请给我发消息,谢谢。
    代码在32位Win7 + Office2010和WinXp + office2010测试通过,64位的系统应该会出错,就不要测试了。以前遇到过2010下写的VBA代码在之前版本运行会报未找到库之类的错误,代码中注意了,但仍可能会有遗漏,总之,请大家反馈意见,让这个小函数更好的为大家服务。

    '***************************************************************************
    '*
    '* Module:          HzToPy
    '* Update:          2011-09-23
    '* Author:          tt.t
    '*
    '* Description:     将中文字符串转换为拼音,就这些。原先这里写了太多废话,删了。
    '*
    '* Theory:    原理依然是通过IFELanguage接口实现。
    '*                  唯一需要解释的是如何解决多音字正确注音的问题。
    '*                  IFELanguage接口是能够正确返回很多多音字拼音的,但多音字的读音只有特定词汇中
    '*                  才能确认,因此在解析拼音时候不能把词拆成单字,否则多音字返回的拼音就很可能不对。
    '*                  之前版本中就是因为把词拆开获取拼音导致多音字拼音错误。
    '*                  这次的更新利用接口返回数据中标识每个拼音长度的数组实现了对返回拼音
    '*                  的按字拆分,无需再把词拆成字获取单个字的拼音,从而解决了多音字问题。
    '*                  需要说明的是,VB_MORRSLT结构就是MS文档中的MORRSLT结构,但是VBA自定义结构
    '*                  无法实现不按4字节对齐,使得不得不修改MORRSLT的定义方式,能这样修改只能说运气不错,
    '*                  因为被修改的部分刚好获取拼音用不到。
    '*
    '* Histroy:
    '*                  2011-09-23
    '*                  ● 重写主要代码,支持多音字,提高了运行效率。
    '*                  ● 取拼音首字时,ao, ai, ei, ou, er作为首字而不是原来的第一个字母。
    '*                  ● 为函数增加了注音方式选择,hàn可以显示为han或han4。
    '*                  ● 函数的使用与之前版本兼容,将模块中函数代码和HZ2PY类代码覆盖之前版本即可实现升级,无需修改文档中的公式。
    '*                  2011-04-07
    '*                  ● 更正CoTaskMemFree传递参数错误,消除了Win7等环境下崩溃。
    '*                  2007-04-03
    '*                  ● 更正redim时vba数组默认起始值错误。
    '*                  2007-04-02
    '*                  ● 最初版本,实现了由汉字获取拼音。
    '*
    '***************************************************************************

    汉字转拼音举例:重庆重要1234,澳门  
      
    显示用空格分开的拼音  
    公式: =HzToPy($b$14," ")
    结果: hàn zì zhuǎn pīn yīn jǔ lì : chóng qìng zhòng yào 1 2 3 4 , ào mén
    显示用-分开的拼音,同时不显示注音符号  
    公式: =HzToPy($b$14,"-",false)
    结果: han-zi-zhuan-pin-yin-ju-li-:-chong-qing-zhong-yao-1-2-3-4-,-ao-men
    显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字,并大写  
    公式: =HzToPy($b$14, " ", false,true,false)
    结果: H Z ZH P Y J L : CH Q ZH Y 1 2 3 4 , AO M
    显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字母,并大写  
    公式: =HzToPy($b$14 ," ", false,true, true)
    结果: H Z Z P Y J L : C Q Z Y 1 2 3 4 , A M

    注,压缩包里的XLSM和XLS文件内容一样,方便各位按照自己office版本选择。
    [11.09.29]版本

    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 更多
    分享分享0 收藏收藏19 有用有用2 无用无用0 转发到微博
  • 507财富
  • 5鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    1352
    帖子
    79
    精华
    4
    分享
    0
    2
    发表于 2007-3-30 10:50:25 |只看该作者 |(楼主)
    本帖最后由 ttui 于 2011-9-24 13:05 编辑

    <p><font color="red" size="6">最初版本,请不要使用了。</font></p><p>&nbsp;</p><p>服了服了,上传附件如此难</p><p><br></p>
    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册
  • 29475财富
  • 0鲜花
  • 21技术
  • 积分排行
    16
    帖子
    14853
    精华
    3
    分享
    0
    3
    发表于 2007-3-30 11:11:02 |只看该作者

    谢谢分享!

    试验了一下,挺不错,不过多音字看样子还是很难实现啊


  • 9287财富
  • 129鲜花
  • 3技术
    • 等级 6EH能手
    积分排行
    222
    帖子
    2884
    精华
    0
    分享
    0

    优秀会员奖章

    4
    发表于 2007-3-30 11:14:08 |只看该作者
    本帖最后由 香川群子 于 2011-9-12 14:12 编辑

    对汉字的调查结果如下:

    韩汉字(韩国造字)            118    0.56%
    日汉字(日本造字)            232    1.09%
    汉汉字(中国冷僻字)       8949   42.10%
    中日韩通用汉字           11958   56.25%
    总计                          21257      






    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册
  • 507财富
  • 5鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    1352
    帖子
    79
    精华
    4
    分享
    0
    5
    发表于 2007-3-30 11:25:33 |只看该作者 |(楼主)
    多义字没办法,word能做,hztopy也能做。word做不到,hztopy也做不到。
    在Office 2007中,多义字可以正确转换,至少“怎么”可以正确转。
    office2003就不行。
  • 9287财富
  • 129鲜花
  • 3技术
    • 等级 6EH能手
    积分排行
    222
    帖子
    2884
    精华
    0
    分享
    0

    优秀会员奖章

    6
    发表于 2007-3-30 11:53:21 |只看该作者
    hànzìzhuǎnpīnyīndewánměijiějuéfāngànhànzìzhuǎnpīnyīndewánměijiějuéfāngàn
    zhìshǎoshìbǐjiàowánměi
    jīngcèshìzàitōngguò
    àosī

    间接证明了中国人离不开汉字的说。

    下面的拼音文字,如果有谁能够在一小时内搞懂,就是绝对高手了。

    jiāngzhōngwénzìfúchuànzhuǎnhuànwéipīnyīnjiùzhèxiē
    yǒuhànzìdédàopīnyīnqíshíbìngbúshìwǒhěnguānxīndeyīgèwèntízhǐshìfāxiànyǐjinggōngkāi
    defāngfǎyǒuhěndàdequēxiàndànquèzuòdehěnhǎoyīncǐcáichángshìjiějuézhègèwèntí
    guòchéngbǐwǒyùqīdeyàoqūzhédeduōzhǔyàoshìshízàishìyìzhǒnghěnshòuxiànzhìdeyǔyán
    búguòhǎozàiyǒuhénántíyějǐnjǐnshìrúhézhǎodàoràoguòxiànzhìdetújìng
    zhōngyúzàigèxiǎoshínèigǎodìngliǎoyíqiè
    shíjiānbǐwǒyùjìdechánglehěnduōyīnwéiwǒshízàishìbùliǎojiěyěbùhěnshúxī
    búguòhǎozàiyíqièdōujiějuélezhōngyúcóngxiǎobáichéngchángliǎoyìxiē
    qíshíyěshìhěnqiángdàde
  • 6546财富
  • 0鲜花
  • 2技术
    • 等级 6EH能手
    积分排行
    245
    帖子
    3071
    精华
    0
    分享
    0
    7
    发表于 2007-3-30 12:11:37 |只看该作者
    巨能干的楼主啊。
  • 4500财富
  • 0鲜花
  • 24技术
  • 积分排行
    223
    帖子
    1078
    精华
    10
    分享
    0
    8
    发表于 2007-3-30 14:28:58 |只看该作者

    超强水平!

  • 507财富
  • 5鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    1352
    帖子
    79
    精华
    4
    分享
    0
    9
    发表于 2007-3-30 15:03:24 |只看该作者 |(楼主)
    QUOTE:
    以下是引用stanleypan在2007-3-30 14:28:58的发言:

    超强水平!

    这话过了,
    代码都不是新东西,只是中文资料非常之少。
    幸好我会些论坛中一般人不熟悉的东西,能够分析调试其它程序,才最终得出现在的方法。

    事实上要不是看了一个日本论坛上的贴子,我也无法很快完全掌握DispCallFunc的调用方法。
    国外excel/vba高手有很多,还有很长的路要走啊~

  • 731财富
  • 0鲜花
  • 0技术
    • 等级 3EH中级
    积分排行
    2629
    帖子
    268
    精华
    0
    分享
    0
    10
    发表于 2007-3-30 15:08:24 |只看该作者
    QUOTE:
    以下是引用stanleypan在2007-3-30 14:28:58的发言:

    超强水平!

    像潘版主这样的API高手都说高,那一定高!

    ★★人生有两件事不能等:孝顺行善★★

    发表回复

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

    发帖时请遵守我国法律,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任。
    回顶部