# Excel VBA汉字拼音 **Repository Path**: ciguoguo/excel-vba-hanzi-pinyin ## Basic Information - **Project Name**: Excel VBA汉字拼音 - **Description**: 通过vba代码创建自定义函数,实现在Excel中得到对应汉字的拼音。 - **Primary Language**: 其他 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-24 - **Last Updated**: 2023-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: Excel, VBA, 拼音, 汉字拼音 ## README # Excel VBA汉字拼音 #### 介绍 用vba代码创建自定义函数/公式,实现在Excel中得到对应汉字的拼音。 #### 使用方法 1. 下载`汉字拼音.bas`,将其导入到VBA编辑器中的模块,在Excel单元格中输入`=pinyin(汉字字符)`,得到单个汉字的拼音。 2. 在Excel单元格中输入`=getpy(多个连续汉字字符)`,得到每个汉字的拼音(不同拼音用空格间隔)。 3. 函数无法获得某个汉字拼音时,将返回汉字本身。 #### 技术细节 1. `Asc(汉字字符)`返回的是汉字字符的整数值,其中有一部分连续的整数对应的汉字拼音是连续的,但是也有很多汉字字符的拼音不在连续的序列中。 2. [`Chr()`](https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/chr-function)函数是`Asc(汉字字符)`对应的反函数,返回对应整数的字符。 3. 《通用规范汉字表〔2013〕》中收录汉字8105个。 #### 存在的问题、疑惑 1. 有很大一部分汉字不在连续的dbcs序列中。 2. 对于多音字,目前只能显示一个拼音。 3. 多音字的发音可能在某些场景是比较固定的,比如,殷的读音有yin和yan,但用于姓氏,只有读音yan。最初,我是为了显示姓名对应的拼音,所以,大多根据姓氏读音来调整汉字的拼音,不知妥不妥,毕竟,有些时候,非姓氏的发音可能更常用。或是,兼备二者? #### 开发者避坑指南 1. 在Excel VBA的select case语句中,最多可以有255个case分支(证据不确凿)。 2. 在Excel VBA中,一行代码最多可以有1024个字符。如果超过了这个限制,你需要将代码分成多行来编写。 3. 汉字的发音约400多个,尝试过将发音相同的汉字放入同一个Select Case语句的Case中(扁平化。。。),但是效果不佳,主要原因可能是上述1和2。除此以外,速度也很慢。 #### 编写时用到的环境 1. Windows10 x64系统上编写的。 #### 参考 1. 思路来源于网络 > 使用中发现的其他问题,可以在issue中提出,以便改进。