dingsir的个人博客分享 http://blog.sciencenet.cn/u/dingsir

博文

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

已有 1647 次阅读 2020-8-25 21:09 |个人分类:软件杂谈|系统分类:教学心得| xlwings, 导入UDFs故障, 更新故障, 升级

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

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

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

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

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

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

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

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

    2020-08-25_20-59-05.png

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

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

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

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



http://blog.sciencenet.cn/blog-1213210-1247847.html

上一篇:学习笔记: 用XPath查询XML数据
下一篇:配方波动范围, 用"百分点"或"基点"表达有独到的好处

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-10-25 16:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部