Excel VBA入门视频教程80集(下载) 全套Excel函数+VBA80集视频教程 Excel数据透视表全套视频教程(28集)

阅读新闻

汉字转拼音的完美解决方案

[日期:2007-08-01] 来源:  作者:佚名 [字体: ]

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

'***************************************************************************
'*
'* MODULE NAME:     HzToPy
'* AUTHOR & DATE:   tt.t
'*                  29 March 2007
'*
'* Usage:           Function HzToPy(HzStr as String) as String
'*                  e.g. Msgbox HzToPy("奥斯") will display ao4si1 with mspy2.0
'*
'*
'* DESCRIPTION:     将中文字符串转换为拼音,就这些~
'*                  有汉字得到拼音其实并不是我很关心的一个问题,只是发现已经公开
'*                  的方法有很大的缺陷,但WORD却做得很好,因此才尝试解决这个问题。
'*                  过程比我预期的要曲折的多,主要是VBA实在是一种很受限制的语言。
'*                  不过好在有Google和Olldbg,难题也仅仅是如何找到绕过限制的途径,
'*                  终于在5个小时内搞定了一切~
'*                  时间比我预计的长了很多,因为我实在是不了解VBA,也不很熟悉OLE:"(
'*                  不过好在一切都解决了~~终于从VBA小白成长了一些。
'*                  其实VBA也是很强大的~
'*
'* Theory:         废话了好多还是说说原理吧,虽然不是每个人都很关心~
'*                  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经验值大涨也算有所收获。
'*                  下面就让代码来说话吧。
'*
'*
'***************************************************************************

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

ps:根据汉字内码确定其拼音范围的做法适用性查,对GBK的字符不适用,所以还是MS自家WORD的方法最好。
upload/07080114083406.rar



阅读:
录入:admin

评论 】 【 推荐 】 【 打印
上一篇:保护你的工作表离不开它:"屏蔽"
下一篇:API函数入门资料(下载)
相关新闻      
本文评论       全部评论
  关于科的成语:http://dic.tongxiehui.net/d   (8723 ,昨 15:34 )
  珍惜时间好段:http://tongxiehui.net/by/54   (4998 ,昨 03:18 )
  山楂的功效与作用及食用方法的功效与作用:h   (589 ,04月28日 )
  等待爱情的诗句:http://tongxiehui.net/by/   (5863 ,04月28日 )
  想在网上做代购请问该怎么做?:http://tong   (7295 ,04月28日 )
发表评论
点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款