我使用EFunction jupyter工具,利用Python开发了一个my_pinyin自定义函数,利用这个函数,可以获得汉字的汉语拼音形式。
自定义函数用法完整公式为:=EFTEXTJOIN(” “,,my_pinyin(B23))。效果如下图所示。

Python自定义函数完整代码为:
%%writefile filename.py
# 可自定义文件名,%%writefile filename.py 必须为cell第一行,才可执行
import pythoncom as pc
import win32com.client as cl
from win32com.client import Dispatch
from pypinyin import pinyin
class PythonComTestObject: # 工程类名称,可定义成自己的工程类名
_reg_clsid_ = '{BB58C07E-B9AD-4BC7-BB8C-01D2FF8FD4E9}' #可替换成你自己的id码
_reg_clsctx_ = pc.CLSCTX_LOCAL_SERVER
_reg_progid_ = "PythonComTestObject" # 和类名保持一致
_reg_desc_ = "我的一个 com 工程"
# 自定义函数列表
_public_methods_ = ['my_sum','my_pinyin']
# 统计两个数相加
def my_sum(self, x, y):
# 函数返回值
return x + y
def my_pinyin(self,x):
# 函数返回值
return pinyin(x)
if __name__ == '__main__':
import win32com.server.register
win32com.server.register.UseCommandLine(PythonComTestObject) # 调用工程类名称,根据实际调整
# 执行本cell 代码,生成filename.py 文件
# 在新的cell之中执行 %run filename.py
print('执行以下代码:%ef_vba PythonComTestObject ')
在jupyter notebook内,执行以上代码。执行完成后。再执行以下代码。

如果提示成功,就可以使用my_pinyin自定义函数了。自定义函数开发好后,就可以在Excel内使用自定义函数了。
需要注意如果想在这个工作簿内直接使用自定义函数,建议将工作簿保存为xlsm格式文件。下次打开这个工作簿后,就可以直接使用自定义函数了。
