快好知 kuaihz

xlwings模块应用的两则小故障及其解决

近期在Python中使用xlwings模块(以下简称xlw)为Excel解析数据,遇到两则关于xlw的小问题,因为解决了所以记下来备忘.

 使用pip-review更新了所有Python模块之后,发现启动Excel时xlwings插件还是没有更新版本

并且提示找不到上一个版本的DLL了, 为什么? 

原因: 更新python模块之后,原来路径中的DLL换版本了,其文件名也变了. 但是Excel自动加载插件的路径"C:Users用户名AppDataRoamingMicrosoftExcelXLSTART" 下面的xlwings.xlam没有更新,它存储的还是访问上个版本的文件名信息. Excel启用加载这个文件之后, 找原来的DLL已经找不到了.

解决办法: 从"C:Program FilesPython38Libsite-packagesxlwingsaddin" 复制一个同名文件放到上述目录下,再重新启动Excel就好了. 这种方法的好处是启动Excel时会自动加载这个插件库. 还有一种方法, 这个xlwings.xlam不放在Excel启动自动加载的目录下(删掉这个目录下的xlwings.xlam), 并在VBA的"引用"的库中,将xlwings模块指向"C:Program FilesPython38Libsite-packagesxlwingsaddinxlwings.xlam", 因为模块更新时会自动更新到这个目录中的文件.

当然,由于你选择的Python安装目录可能与上面提到的不一样,你随机应变调整就好.

在某台电脑上,无法顺利导入python代码中的自定义函数或过程到Excel中来.

这个问题困扰了我几个月时间,一开始以为是Python版本问题,或者是Office版本问题,但试验多次都没有解决. 今天发现0.20.4可以安装不带密码的xlwings.xlam, 再次尝试,发现可以调试这个加载宏了,原来代码竟然停留在以下代码的最后一句:

根据tf字串的内容,可以找到这个文件,虽然没有后缀但可以正常打开,是一个完整的待导入的VBA代码模块,这就说明前面的代码运行是正常的.只是没有成功导入. 

这次错误信息是"不能信任到VBA Project的连接", 错误码1004, 这就有点眼熟了, 原来是安全设置阻碍了VBA代码来导入代码模块, 是个安全问题而不是代码问题. 于是网上查找一下解决办法,很快就搞定了.

解决办法:通过"宏安全性:按钮,点击进入"信任中心",设置"启用所有宏"且勾选"信任对VBA工程对象模型的访问(V)", 保存再启动Excel,导入UDFs的问题就非常顺畅解决了.

备注:这个错误其实不应该犯,我早就知道VBA的这个安全问题,只是忘记了xlwings导入时也是通过VBA来写入VBA代码,而碰巧这个设置选项又一直没有开启.

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:模块  模块词条  故障  故障词条  及其  及其词条  xlwings  xlwings词条  解决  解决词条  
观点

 “群体免疫”?

吕乃基疫情开始至今已近三个多月,中国采取果断措施到现在也已有两个月了。本想写点什么,一时又不知从何落笔。心情五味杂陈。眼下,疫情进入“下半场”,由此提供了一个全...(展开)

观点

 防控新型冠状病毒(2019-nC...

1月20日晚,央视《新闻1+1》栏目采访了“国家卫健委高级别专家组组长”钟南山院士,针对“新型冠状病毒感染的肺炎疫情”有关防控情况进行了权威解答,八旬高龄的钟老...(展开)