Я могу успешно вставить часть кода VBA в созданную книгу excel, но то, что я пытаюсь сделать, это использовать событие Workbook_Open(), чтобы код VBA выполнялся при открытии файла. Я добавляю sub к объекту «ThisWorkbook» в моем файле шаблона xlsm. Затем я использую инструмент повышения производительности openxml для отражения кода и получения закодированных данных VBA.OpenXML SDK Inject VBA в excel workbook
Когда файл сгенерирован и я просматриваю VBA, я вижу объекты «ThisWorkbook» и «ThisWorkbook1». Мой VBA находится в объекте «ThisWorkbook», но код никогда не запускается при открытии. Если я переведу свой код VBA в «ThisWorkbook1» и снова открою файл, он отлично работает. Почему добавлена дополнительная «ThisWorkbook»? Невозможно ли вставить таблицу 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
У кого-нибудь есть идеи?
В редакторе VBA, когда вы щелкаете правой кнопкой мыши по этой книге и этой книге 1, есть ли у вас ** Удалить эту книгу ... ** выделен серым цветом? –