[英]In C#, how do I use the Excel Interop to speed up writing several cell values
[英]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
。 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.