OpenXML SDK Вставка VBA в книгу Excel

Я могу успешно внедрить фрагмент кода VBA в сгенерированную книгу Excel, но я пытаюсь использовать событие Workbook_Open(), чтобы код VBA выполнялся при открытии файла. Я добавляю подпрограмму к объекту «ThisWorkbook» в моем файле шаблона xlsm. Затем я использую инструмент производительности openxml, чтобы отразить код и получить закодированные данные VBA.

Когда файл создается и я просматриваю VBA, я вижу объекты «ThisWorkbook» и «ThisWorkbook1». Мой VBA находится в объекте ThisWorkbook, но код никогда не выполняется при открытии. Если я перемещу свой код VBA в «ThisWorkbook1» и снова открою файл, он будет работать нормально. Почему создается дополнительная «Эта рабочая книга»? Разве нельзя внедрить электронную таблицу Excel с подпрограммой Workbook_Open()? Вот фрагмент кода C#, который я использую:

private string partData = "...";  //base 64 encoded data from reflection code
//open workbook, myWorkbook
VbaProjectPart newPart = myWorkbook.WorkbookPart.AddNewPart<VbaProjectPart>("rId1");
System.IO.Stream data = GetBinaryDataStream(partData);
newPart.FeedData(data);
data.Close();
//save and close workbook

У кого-нибудь есть идеи?

6
задан Community 9 July 2018 в 19:34
поделиться