このコードを使用して、テンプレート xlsm ファイルの VbaPart を別のファイルに追加します。vbセクションを開くと、各シートと「ThisWorkBook」に重複したエントリが追加されます。
以下は、開発者タブでどのように見えるかのスクリーンショットです
以下は私が使用するコードです:
using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(convertDocumentFile, true))
{
VbaProjectPart extendedPart = FindPart(myDoc);
if (extendedPart != null)
myDoc.DeletePart(extendedPart);
if (vbaPart != null)
myDoc.WorkbookPart.AddPart<VbaProjectPart>(vbaPart);
}
private static VbaProjectPart FindPart(SpreadsheetDocument mainPart)
{
if (mainPart != null)
{
foreach (IdPartPair partPair in mainPart.WorkbookPart.Parts)
{
if (partPair.OpenXmlPart.RelationshipType == _wnsRelationShip.NamespaceName)
{
return partPair.OpenXmlPart as VbaProjectPart;
}
}
}
return null;
}
ここで、変数「convertDocumentFile」は vbaProject パーツを追加する必要があるファイルであり、「vbaPart」はテンプレートからの vbaProjectPart です。