我正在为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不是持久的。 在工作簿级别,我可以在打开时再次取消保护和保护工作表。但是如何通过加载项实现这一目标?
答案 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
}