我正在尝试向 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 是空的。
任何想法在哪里挖掘?