(Excel) VBA падает при доступе к CodeModule - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь вставить некоторый код в кодовый модуль VBA и аварийно завершает работу при чтении свойства CodeModule.Вот пример кода на 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 пуст.

Есть идеи, куда копать?

1 Ответ

0 голосов
/ 13 февраля 2019

Файл xlsx, поэтому у него не будет VBProject.По общему признанию, это должно бросить ошибку вместо сбоя.Вам нужен тип файла xlsm.

...