簡體   English   中英

如何使用C#和Interop在Excel中設置鎖定的單元格保護選項?

[英]How do I set locked cell protection options in Excel with C# and Interop?

這是背景信息。 我有一個可寫入excel 2007 .xlsm文件的應用,並且我正在使用C#和Excel 12.0互操作對象庫以及Visual Studio 2010來執行此操作。我能夠更改單元格值和公式,設置字體和字體樣式,將單元格設置為鎖定或不鎖定等。我需要做的最后一件事是設置工作表的保護,以禁止選擇鎖定的單元格。

當我嘗試調用此代碼時,作為對常規工作表保護的測試...

((Excel.Worksheet)excelApp.ThisWorkbook.Sheets[0]).Protect(Password: protectionPassword, AllowFormattingCells: false);

...我Exception from HRESULT: 0x800A03EC獲得異常Exception from HRESULT: 0x800A03EC告訴我未處理COM異常。

另外,互操作性保護對象也沒有給我上面提到的選項,盡管當我單擊“審閱”選項卡下的“保護表”時,該選項在excel中可用。

因此,現在我的問題是:如何在C#中使用Excel Interop禁用AllowSelectLockedCells選項以保護Excel中所需的工作表?

自從被問到以來,您可能已經解決了這個問題,但是對於那些(例如我)偶然從搜索引擎中尋求解決方案的人(例如我)來說,它的好處是:

要使此工作正常運行,需要三點:

  • _Application.ThisWorkbook實際上是指包含宏的工作簿對象,而不是Excel實例中當前處於活動狀態的工作簿。 為此,您需要_Application.ActiveWorkbook
  • Excel工作表索引從1開始,而不是0。
  • 為了防止選擇鎖定的單元格(您正在尋找的AllowSelectLockedCells),您必須先將EnableSelection屬性設置為XlEnableSelection.xlUnlockedCells然后再鎖定工作表。

因此,以下將滿足您的需求:

((Excel.Worksheet)excelApp.ActiveWorkbook.Sheets[1]).EnableSelection = Excel.XlEnableSelection.xlUnlockedCells;
((Excel.Worksheet)excelApp.ActiveWorkbook.Sheets[1]).Protect(Password: protectionPassword, AllowFormattingCells: false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM