我正在尝试向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 Office版本,都崩溃了。有趣的是excel com对象仍然有效,我仍然能够操纵它并保存文件。但是VBProject是空的。
有什么想法可以挖掘吗?
答案 0 :(得分:0)
该文件是xlsx,因此没有VBProject。诚然,它应该引发错误而不是崩溃。您需要文件类型为xlsm。