守则
import win32com.client as win32
Excel = win32.gencache.EnsureDispatch('Excel.Application')
以前可以工作,但现在会产生错误:
AttributeError: 'module' object has no attribute 'CLSIDToPackageMap'
这是怎么回事?
守则
import win32com.client as win32
Excel = win32.gencache.EnsureDispatch('Excel.Application')
以前可以工作,但现在会产生错误:
AttributeError: 'module' object has no attribute 'CLSIDToPackageMap'
这是怎么回事?
4条答案
按热度按时间wydwbb8l1#
删除C:\Temp\gen_py后,上面的代码又可以工作了。希望可以保存麻烦!
vvppvyoh2#
此属性错误的主要原因是因为COM服务器已从后期绑定(动态)转换为早期绑定(静态)。
有两种方法可以解决此问题:
1.使用动态模块强制代码以面向后期绑定的方式工作。使用示例:
1.使用区分大小写的camelcase关键字作为早期绑定的方式。使用示例:
我猜,删除gen_py文件夹后第一次运行的代码工作正常,但第二次运行时抛出错误,因为win32.gencache.EnsureDispatch是早期绑定Dispatch,将再次创建gen_py文件夹。
bxjv4tth3#
我在Github的讨论中找到了一个更优雅的解决方案,并将其合并到一个函数中。
f3temu5u4#
谢谢-添加您的功能并进行此更改后,工作起来很有魅力:
真诚的
日本