繁体   English   中英

分发由xlwings驱动的Excel文件。 “ ActiveX组件无法创建对象”错误

[英]Distributing xlwings-powered Excel files. 'ActiveX component can't create object' error

我有一个Excel文件,该文件高度依赖以python(xlwings)编程的UDF。 它在安装了python和插件的PC上工作得很好。 问题是我必须将文件发送给一群什至不知道python是什么的人。 由于存在UDF,因此无法使用冻结的可执行文件。 所以我做了什么:

  1. 从python.org下载了可嵌入的python安装(Windows x86可嵌入的zip文件),并将其解压缩到xlsm文件所在的文件夹(在名为“ Python”的单独文件夹中)。

  2. 从bootstrap.pypa.io下载的get-pip.py,取消注释文件python36._pth中的“导入站点”行,运行了“ python get.pip.py”。

  3. 从Christoph Gohlke的绝佳站点下载了pywin32和comtypes轮子,并使用“ pip install [filename] .whl”进行了安装。 已安装的xlwings('pip install xlwings')。 此安装的总大小为50Mb。

  4. 创建了一个安装了xlwings模块的新文件(“ xlwings quickstart myproject --standalone”)。 将“ _xlwings.conf”表重命名为“ xlwings.conf”,然后在“解释器”字段中输入以下公式: =LEFT(CELL("filename";A1);FIND("[";CELL("filename";A1))-1) & "Python\\pythonw.exe"它将在打开文件的任何位置自动计算到python解释器的正确路径。

宏和UDF似乎可以正常工作,但是每次打开文件时,所有UDF公式都会抛出“ ActiveX组件无法创建对象”错误。 如果我强制进行重新计算([CTRL]-[ALT​​]-[SHIFT] -F9),所有操作将再次开始,但是我不能指望最终用户会知道如何执行此操作。 有没有使UDF开箱即用的技巧? 或者,也许有一种更方便的方式来分发由xlwings支持的Excel文件?

正如Phillip在评论部分中建议的那样,可靠的解决方法是将以下VBA代码添加到“ ThisWorkbook”模块中:

Private Sub Workbook_Open()
Application.CalculateFull
End Sub

打开工作簿后,它将启动完全重新计算。 但是,如果xlwings顺利进行而没有任何修改,那将是很好的。 在我看来,如此出色的一揽子计划唯一阻止其被更广泛采用的原因是发行问题。

不幸的是,我不能支持菲利普的评论,也不能对他表示感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM