(Excel)在访问CodeModule时VBA崩溃

时间:2019-02-13 12:00:30

标签: python excel vba pythoncom

我正在尝试向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是空的。

有什么想法可以挖掘吗?

1 个答案:

答案 0 :(得分:0)

该文件是xlsx,因此没有VBProject。诚然,它应该引发错误而不是崩溃。您需要文件类型为xlsm。