I am facing issue while merging two vba project from 2 different word templates.
I have 2 files 1) Master template (.docm) 2) custom template (.docm)
- Master template have 1 form and 2 module code
- Custom template have 2 modules.
I want to merge vba code so that I can get all modules and forms in 1 template file.
using (MemoryStream memoryStream = new MemoryStream(CustomFileWithMacros, false))
{
Document _doc = new Document(memoryStream);
using (MemoryStream memoryStreamMaster = new MemoryStream(MasterFileWithMacros, false))
{
Document baseWorkbook = new Document(memoryStreamMaster);
VbaProject vba = _doc.VbaProject.Clone();
// this will copy all vba code to custom template file
_doc.VbaProject = baseWorkbook.VbaProject.Clone();
VbaProject project = _doc.VbaProject;
// copy all custom modules to custom template again so that vba code get merged
foreach (VbaModule vbaModule in vba.Modules)
{
if (vbaModule.Type == VbaModuleType.ProceduralModule ||
vbaModule.Type == VbaModuleType.ClassModule)
{
VbaModule mod = vba.Modules[vbaModule.Name].Clone();
project.Modules.Add(mod);
}
}
}
}
Thanks in Advance