Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
汉字转换为拼音自定义函数的说明
作者:bengdeng | 来源:Excel吧 | 时间:2008-10-31 | 阅读权限:游客 | 会员币:0 | 【

牛人tt.t用了5个小时制造,本站修正了一点小小的错误,函数原文件请到:http://www.excelba.com/Soft/Html/121.html 下载。

参数说明:

  参数名 参数类型 说明
第1个参数 Hz 字符型 为汉字字符串
第2个参数 ShowOnlyPy 布尔型,可选 设定是否只显示汉字拼音,默认为只显示汉字拼音
第3个参数 Sep 字符型,可选 设定拼音间隔字符,默认为空("")
第4个参数 ShowNotation 布尔型,可选 设定是否显示注音符号,默认显示
第5个参数 ShowInitialOnly 布尔型,可选 设定是否仅显示拼音首字,默认显示全部
第6个参数 ShowOnlyOneChar 布尔型,可选 设定是否仅显示拼音首字母("zh"显示为"z"),默认只显示首字 母

'原理:虽然不是每个人都很关心~。WORD的拼音向导能够将汉字转成拼音全是倚仗微软拼音的帮助, 微软拼音2.0以上版本都提供了汉字到拼音的转换功能。 微软拼音MSIME.China类中的IFELanguage接口具 体实现了转换功能,不过MSIME.China中没有提供IDispatch接口,VBA的CreateObject不支持 调用这样的 类,因此我们只好手工调用。CoCreateInstance可以创建类 并获取IFELanguage接口,但我们无法直接调 用,因为VBA不知道如何调用,IFELanguage接口的Method。这里困扰了我好久,原本希望能向其他语言那 样,声明接口结构,但VBA并不支持。万般无奈下只好在OLE相关DLL中寻找,期待能找到代理函数简介调用 接口的Method。呵呵~功夫不负苦心人终于在OLEAUT32中找到了DispCallfunc。Google了一下,果然是我 需要的。接口知道了,如何调用也 清楚了,剩下的问题就是如何取得转换后的结果。 IFELanguage.GetMorphResult会将 转换的结果存在一个叫做tagMORRSLT的结构中,并返回指向tagMORRSLT 的指针。新问题又来了,VBA不支持指针...sigh,为什么其他语言很容易实现的功能VBA用起来 就这么烦 呢~幸好VBA读取内存的限制也好突破,只需调用ntdll的RtlMoveMemory。 好了~一切限制都已解除, HzToPy终于正常工作了~~ 说起来一切顺理成章,可是寻找解决方法的过程真的很痛苦,不过VBA经验值 大涨也算有所收获。

文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口