2012-10-04 56 views
0

我使用此代碼將模板xlsm文件的VbaPart添加到另一個。 當我打開vb節重複條目獲取添加每個工作表以及「ThisWorkBook」。使用來自模板xlsm文件的Open XML將vba代碼複製到另一個xlsm文件

下面是它的外觀在開發選項卡enter image description here

和下面的屏幕截圖是我使用的代碼:

使用(SpreadsheetDocument myDoc = SpreadsheetDocument.Open(convertDocumentFile,真) ) { 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。

問候, 弗朗西斯P.

回答

0

原因代碼不執行是,代碼名稱屬性缺失的值,當我轉換爲XLSM格式因此加入下面的代碼

myDoc.WorkbookPart。 Workbook.WorkbookProperties.CodeName =「ThisWorkbook」;

指向正確的工作簿,這將得到vb代碼執行!

相關問題