python - (Excel) 访问 CodeModule 时 VBA 崩溃

标签 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 是空的。

有什么想法可以在哪里挖掘吗?

最佳答案

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

关于python - (Excel) 访问 CodeModule 时 VBA 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54669716/

相关文章:

vba - 删除所有重复行 Excel vba 无法正常工作

VBA Weekday 函数返回与 Excel Weekday 函数不同的值

ms-access - 如何在选项组 Access VBA 中获取单选按钮的值

Python:当从另一个类中调用初始方法时,类方法调用其他类方法

python - 如何使用 Pandas 查找特定列具有十进制数字的行?

python - AZure DataBricks - 大型 CSV 文件字段验证

vba - 如何使Excel VBA变量可用于多个宏?

excel - 读取excel文件并上传到数据库Laravel 5

python - 使用 python/mysql 进行多查询

python - 如何在不删除 Python 中的其余部分的情况下将信息添加到 Excel 工作表?