wor*_*yer 14 python excel win32com
每个人!
我一直在 Python 中使用 win32com.client 模块来访问包含 VBA 宏的 Excel 文件的单元格。
代码中的一条语句 xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
一直在抛出错误:
AttributeError: module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x6' has no attribute 'MinorVersion'
是否有人遇到过类似的情况,如果是,对此有什么可能的补救措施?(我已经在 GitHub 上查看了 win32com 的源代码,但无法从中获得多大意义。)
小智 10
此属性错误的主要原因是您的 COM 服务器已从后期绑定(动态)转变为早期绑定(静态)。
有两种方法可以解决此问题:
使用动态模块强制您的代码以面向后期绑定的方式工作。使用示例:
"win32com.client.dynamic.Dispatch()" instead of "win32com.client.Dispatch()"
Run Code Online (Sandbox Code Playgroud)使用驼峰敏感关键字作为早期面向绑定的方式。使用示例:
"excel.Visible()" instead of "excel.VISIBLE()" or "excel.visible()"
Run Code Online (Sandbox Code Playgroud)试用
"win32com.client.dynamic.Dispatch()" instead of "win32com.client.gencache.EnsureDispatch"
Run Code Online (Sandbox Code Playgroud)
由于 win32com.client.gencache.EnsureDispatch 强制 MakePy 进程。
小智 6
重命名GenPy
文件夹应该可以。
它出现在: C:\Users\ _insert_username_ \AppData\Local\Temp\gen_py
重命名它将创建一个新Gen_py
文件夹,并让您正确发送 Excel。
小智 3
如果我想确保 python 启动一个新的 excel 实例(例如访问 xlsm 文件中的宏),我使用
xlApp = win32com.client.DispatchEx("Excel.Application")
Run Code Online (Sandbox Code Playgroud)
这样我就可以关闭应用程序而不会损害已经打开的实例。
否则,我可以简单地使用
xlApp = win32com.client.Dispatch("Excel.Application")
Run Code Online (Sandbox Code Playgroud)
那对你有用吗?
归档时间: |
|
查看次数: |
14906 次 |
最近记录: |