保护UserInterfaceOnly和EnableOutlining

时间:2014-02-06 09:43:32

标签: c# excel

我正在为Excel创建一个插件。它正在保护工作簿中的工作表:

public static void ProtectSheetUi(_Worksheet sheet, string password)
{
    sheet.EnableOutlining = true;
    sheet.Protect(password, Contents: true, UserInterfaceOnly: true, AllowFormattingCells: true,
        AllowFormattingColumns: true, AllowFormattingRows: true);
}

但问题是,当我关闭并重新打开工作簿时,分组/取消分组不起作用。这是因为UserInterfaceOnly不是持久的。 在工作簿级别,我可以在打开时再次取消保护和保护工作表。但是如何通过加载项实现这一目标?

1 个答案:

答案 0 :(得分:3)

关闭工作簿时,不会保存UserInterfaceOnly设置。打开工作簿时,您必须重置它。执行此操作的最佳位置是Workbook_Open事件过程。所以你需要在你的加载项中处理它。例如(从内存中执行此操作,请忽略拼写错误/语法错误

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookOpen += 
    new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
}

void Application_WorkbookOpen(Excel.Workbook Wb)
{
   //~~> Rest of your code
}