我可以成功地將一塊VBA代碼注入到生成的Excel工作簿中,但我想要做的是使用Workbook_Open()事件,以便在打開文件時執行VBA代碼。我將該sub添加到我的xlsm模板文件中的「ThisWorkbook」對象中。然後,我使用openxml生產力工具來反映代碼並獲取編碼的VBA數據。OpenXML SDK將VBA注入到excel工作簿
生成文件並查看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編輯器中,當您右鍵單擊ThisWorkbook和ThisWorkbook1時,是否將** Remove ThisWorkbook ... **選項變爲灰色? – 2012-03-21 14:03:00