static void Main(string[] args) { using (WordprocessingDocument destDoc = WordprocessingDocument.Create("destination.docm", WordprocessingDocumentType.MacroEnabledDocument)) { WordprocessingDocument srcDoc = WordprocessingDocument.Open("macrosource.docm", false); MainDocumentPart mainPart = destDoc.AddMainDocumentPart(); // Create the document structure and add some text. mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); Paragraph para = body.AppendChild(new Paragraph()); Run run = para.AppendChild(new Run()); run.AppendChild(new Text("This is a copied macro enabled doc. Hit Ctrl+Insert Now.")); // Get VBA parts from source document VbaProjectPart vbaSrc = srcDoc.MainDocumentPart.VbaProjectPart; VbaDataPart vbaDatSrc = vbaSrc.VbaDataPart; CustomizationPart keymapSrc = srcDoc.MainDocumentPart.CustomizationPart; // Create VBA parts in destination document VbaProjectPart vbaProjectPart1 = mainPart.AddNewPart <VbaProjectPart>("rId9"); VbaDataPart vbaDataPart1 = vbaProjectPart1.AddNewPart <VbaDataPart>("rId1"); CustomizationPart customKeyMapPart = mainPart.AddNewPart <CustomizationPart>("rId10"); // Copy part contents vbaProjectPart1.FeedData(vbaSrc.GetStream()); vbaDataPart1.FeedData(vbaDatSrc.GetStream()); customKeyMapPart.FeedData(keymapSrc.GetStream()); } }
} // end get cell values private void GetVbaStream(VbaProjectPart vbaProjectPart) { if (vbaProjectPart == null) { this.vbaStream = null; } else { this.vbaStream = vbaProjectPart.GetStream(); } }
private static Stream GetVbaStreamFrom(VbaProjectPart vbaProjectPart) { if (vbaProjectPart == null) { throw new ArgumentNullException("vbaProjectPart"); } var stream = vbaProjectPart.GetStream(); return(stream); }
public void Apply(ExOleObjStgAtom vbaProject) { byte[] bytes = vbaProject.DecompressData(); _targetPart.GetStream().Write(bytes, 0, bytes.Length); }