如何解决xlwings:无法通过xlwings功能区导入功能UDF
我正在尝试通过xlwings导入用户定义的函数(UDF),但是遇到了问题。按下xlwings功能区中的导入功能按钮后,我收到以下运行时错误:
`Run_time error '1004
`Method of 'VBProject' of object '_Workbook' failed.'
根据VBA调试器,以下模块包含该问题:
Sub ImportXlwingsUdfsModule(tf As String)
' Fallback: This is called from Python as direct pywin32 calls were
' sometimes failing,see comments in the Python code
On Error Resume Next
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents("xlwings_udfs")
On Error GoTo 0
**ActiveWorkbook.VBProject.VBComponents.Import tf**
End Sub
包含UDF的.py文件与调用.xlsm工作簿保存在同一文件夹中。
我该如何纠正这一点,以便可以利用UDF?
解决方法
感谢xlwings团队提供的链接可以帮助我解决问题。
需要确保启用了对VBA对象模型的信任访问。
请参阅:https://docs.xlwings.org/en/stable/udfs.html#one-time-excel-preparations
,如果您拥有对 VBA 对象模型的可信访问权限,并且遇到了 TypeError,那么还有一个适用于 0.22.2 和 0.22.3 甚至更早版本的附加答案。
在文件 Lib>Site-Packages>xlwings>udfs.py 的第 651 或 652 行(取决于版本)插入“.Item”,如下所示:
xl_workbook.VBProject.VBComponents.Remove(xl_workbook.VBProject.VBComponents.Item("xlwings_udfs"))
我不知道为什么会这样,但确实如此。原始行在 VBA 中工作,仅适用于 VBA 语法和工作簿参考的修改。 (即以问题中的 VBA 代码为例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。