win32com调用Excel报错:模块无MinorVersion属性,请求协助排查
问题排查与解决步骤
问题描述
此前可正常运行的Python操作Excel代码,现在执行时出现属性错误,提示win32com生成的缓存模块缺少MinorVersion属性。
代码示例
import win32com.client as win32 excel = win32.gencache.EnsureDispatch('Excel.Application') wb=excel.Workbooks.Open('C:\Technical\AutomationScripts\Model_Variable_Path.xlsx') excel.Visible = True
报错信息
File "C:\Technical\AutomationScripts\Testscript.py", line 2, in <module> excel = win32.gencache.EnsureDispatch('Excel.Application') File "C:\Program Files\Python39\lib\site-packages\win32com\client\gencache.py", line 625, in EnsureDispatch mod = EnsureModule(tla[0], tla[1], tla[3], tla[4], bForDemand=bForDemand) AttributeError: 模块 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9' 没有属性 'MinorVersion'
解决方法
方法一:清理win32com缓存
- 定位到gen_py缓存目录:通常在
C:\Users\[你的用户名]\AppData\Local\Temp\gen_py - 删除该目录下所有文件及子文件夹,重点删除报错中提到的
00020813-0000-0000-C000-000000000046x0x1x9相关文件夹 - 重启Python环境,重新运行代码,win32com会自动生成新的缓存文件
方法二:改用Dispatch替代EnsureDispatch
将代码中的win32.gencache.EnsureDispatch替换为win32.Dispatch,同时给路径字符串添加r前缀避免转义问题:
import win32com.client as win32 excel = win32.Dispatch('Excel.Application') wb=excel.Workbooks.Open(r'C:\Technical\AutomationScripts\Model_Variable_Path.xlsx') excel.Visible = True
内容的提问来源于stack exchange,提问作者Joseph Stalin Pillai
相关产品推荐
相关产品推荐

