python - (Excel) 访问 CodeModule 时 VBA 崩溃
问题描述
我正在尝试向 VBA 代码模块插入一些代码,并且在读取 CodeModule 属性时 excel 崩溃。这是python中的示例代码:
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = False
workbook = excel.Workbooks.Open("C:\\test\\test1.xlsx")
excel.VBE.MainWindow.Visible = False
sheet = workbook.Worksheets(1)
vbp = workbook.VBProject
comp = vbp.VBComponents(workbook.CodeName)
cm = comp.CodeModule # <--------------- !!! Excel crashes here
curLine = cm.CreateEventProc("Open", "Workbook")
cm.InsertLines(curLine + 1, "some text")
错误应用程序名称:EXCEL.EXE,版本:16.0.11231.20174,时间戳:0x5c5e3867
错误模块名称:combase.dll,版本:10.0.14393.2791,时间戳:0x5c5a43d3
异常代码:0xc0000005
操作系统:Windows Server 2016 Standard,最新
这不是 pywin32 特定的问题,我已经对此进行了测试。我也试过 x86 和 x64 办公版本,都崩溃了。有趣的是,excel com 对象仍然存在,我仍然能够操作它并保存文件。但是 VBProject 是空的。
任何想法在哪里挖掘?
解决方案
该文件是 xlsx,因此它不会有 VBProject。诚然,它应该抛出错误而不是崩溃。您需要 xlsm 文件类型。
推荐阅读
- python - 如何返回一个numpy数组,其值来自相同形状的不同数组的最大值的源数组
- c# - 如何将 linq 查询转换为 lambda 表达式
- typescript - 在泛型中使用递归类型别名会导致错误
- python - 模块上的 __getattr__ 的行为与 PEP 建议的方式不同
- apache-spark - 在 parquet 中添加新列并导入 HBase
- c# - 有没有办法使用 WPF xaml 代码创建数字文本框?
- batch-file - *.bat 将路径文件夹保存为变量
- angular - Angular 8:问题查找通过多个 ng-content 嵌套的组件
- c++ - 'const std ::? 类型的引用的 C++ 无效初始化
- python - Celery 未将消息发布到基于非任务的 RabbitMQ 队列