2014-02-06 60 views
3

我正在爲Excel創建插件。據保護片在工作簿:保護UserInterfaceOnly和EnableOutlining

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不是持久的。 在工作簿級別,我可以在打開時再次取消保護和保護表單。但是如何用插件實現這一點?

回答

2

當您關閉工作簿時,不會保存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 
} 
+0

我將不得不重新保護工作表?這意味着我需要在某處存儲密碼。我只能將UserInterfaceOnly屬性設置爲true嗎? – irusul

+0

AFAIK和我可能是錯的,但不幸的是,您將不得不取消保護並重新保護它以使UserInterfaceOnly生效。 –