如何从Excel表单中删除单个文件的macros?

范围:

我和我的团队正在使用VBA为我们的客户开发Excel报告。 在这个.xlms文件中有函数和macros,我不想为客户提供。

我们设法使用这个代码示例从工作簿中删除所有的macros:

private void DeleteMacros (string reportPath) { // WorkBookManager is our own Wrapper for the Excel Workbook class WorkbookManager wb = new WorkbookManager (reportPath); wb.OpenWorkbook (false); //Lock workbook wb.RunMacro("ThisWorkbook.LockWorkbook"); //Deleting the Macros from the workbook VBProject project = wb.GetInstance().VBProject; for (int i = project.VBComponents.Count; i >= 1; i--) { VBComponent component = project.VBComponents.Item(i); try { project.VBComponents.Remove(component); } catch (ArgumentException) { continue; } } for (int i = project.VBComponents.Count; i >= 1; i--) { VBComponent component = project.VBComponents.Item(i); component.CodeModule.DeleteLines(1, component.CodeModule.CountOfLines); } wb.CloseAndSave(); wb.CleanUp(); } 

问题:

在这个工作簿中有一些macros,我们仍然需要,比如用于从一个表格导航到另一个表格,我们绑定到button(为了避免在报表的底部显示工作表标签)。

题:

有没有什么办法可以将那些不重要的(/敏感)macros封装在单个工作簿的单个文件中,并以某种方式删除所有其他工作簿及其macros?

如果没有,这是正确的方法吗?

你有没有尝试删除它之前检查每个组件的属性(如Name )? 只是不要删除你想保留的。