title: OpenXML SDK Inject VBA into excel workbook
body: <p>I can successfully inject a piece of VBA code into a generated excel workbook, but what I am trying to do is use the Workbook_Open() event so the VBA code executes when the file opens.  I am adding the sub to the "ThisWorkbook" object in my xlsm template file.  I then use the openxml productivity tool to reflect the code and get the encoded VBA data.  </p>
  
  <p>When the file is generated and I view the VBA, I see "ThisWorkbook" and "ThisWorkbook1" objects.  My VBA is in "ThisWorkbook" object but the code never executes on open.  If I move my VBA code to "ThisWorkbook1" and re-open the file, it works fine.  Why is an extra "ThisWorkbook" created?  Is it not possible to inject an excel spreadsheet with a Workbook_Open() sub? Here is a snippet of the C# code I am using:</p>
  
  <pre><code>private string partData = "...";  //base 64 encoded data from reflection code
  //open workbook, myWorkbook
  VbaProjectPart newPart = myWorkbook.WorkbookPart.AddNewPart&lt;VbaProjectPart&gt;("rId1");
  System.IO.Stream data = GetBinaryDataStream(partData);
  newPart.FeedData(data);
  data.Close();
  //save and close workbook
  </code></pre>
  
  <p>Anyone have ideas?</p>