0

范围:

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

我们已使用此代码示例成功地从工作簿中删除了所有宏:

 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();
    }

问题:

此工作簿中有一些宏我们仍然需要,例如用于从一个工作表导航到另一个工作表的宏,我们绑定到按钮(以避免在报表底部显示工作表选项卡)。

问题:

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

如果不是,那么这样做的正确方法是什么?

4

1 回答 1

2

Name您是否尝试在删除之前检查每个组件的属性(例如)?只是不要删除你想保留的那些。

于 2013-02-06T07:05:09.623 回答