public void Import(string projectName) { var target = _environment.ActiveVBProject; using (Stream file = File.OpenRead(BuildFileName(projectName))) { var formatter = new BinaryFormatter { AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple, Binder = new DeserializationAppDomainBinder() }; VbaCodeComponents result = (VbaCodeComponents)formatter.Deserialize(file); foreach (var item in result.Components) { Vbe.VBComponent module = target.VBComponents.FirstOrDefault(e => e.Name == item.Name); if (null == module) { module = target.VBComponents.Add(Vbe.Enums.vbext_ComponentType.vbext_ct_StdModule); module.Name = item.Name; } else { module.CodeModule.DeleteLines(1, module.CodeModule.CountOfLines); } module.CodeModule.AddFromString(item.Code); } } }
public void Export(string projectName) { var target = _environment.VBProjects.First(e => e.Name == projectName); var formatter = new BinaryFormatter(); ValidateDirectoryExists(); using (Stream file = File.Create(BuildFileName(projectName))) { var components = target.VBComponents; VbaCodeComponents result = new VbaCodeComponents(); result.VbaProjectName = projectName; var comps = new List <VbaCodeComponent>(); foreach (var component in components) { if (component.Type != Vbe.Enums.vbext_ComponentType.vbext_ct_StdModule) { continue; } string name = component.Name; string code = component.CodeModule.Lines(1, component.CodeModule.CountOfLines); comps.Add(new VbaCodeComponent() { Name = name, Code = code }); } result.Components = comps.ToArray(); formatter.Serialize(file, result); } target.Dispose(); }