VBAコードを生成したExcelワークブックに正常に挿入できますが、Workbook_Open()イベントを使用してファイルを開くときにVBAコードが実行されます。私はxlsmテンプレートファイルの "ThisWorkbook"オブジェクトにサブを追加しています。次にopenxml生産性ツールを使用してコードを反映させ、コード化されたVBAデータを取得します。OpenXML SDK excelワークブックにVBAを挿入
ファイルが生成され、VBAを表示すると、 "ThisWorkbook"と "ThisWorkbook1"オブジェクトが表示されます。私のVBAは "ThisWorkbook"オブジェクトにありますが、コードはopenで実行されません。 VBAコードを "ThisWorkbook1"に移動してファイルを再度開くと正常に動作します。余分な "ThisWorkbook"が作成されるのはなぜですか? Workbook_Open()サブとともにExcelスプレッドシートを挿入することはできませんか?ここに私が使用している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 ... **選択がグレー表示になりますか? –