我使用此代码将模板 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。