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();
            }
        }
Beispiel #3
0
        private static Stream GetVbaStreamFrom(VbaProjectPart vbaProjectPart)
        {
            if (vbaProjectPart == null)
            {
                throw new ArgumentNullException("vbaProjectPart");
            }

            var stream = vbaProjectPart.GetStream();

            return(stream);
        }
Beispiel #4
0
 public void Apply(ExOleObjStgAtom vbaProject)
 {
     byte[] bytes = vbaProject.DecompressData();
     _targetPart.GetStream().Write(bytes, 0, bytes.Length);
 }