2016-03-09 3 views
0

Я использую C# для автоматизации с помощью Excel. Я собираю данные и создаю таблицу вокруг нее, чтобы пользователь мог вычислить сумму столбца. Каждый раз, когда я защищаю лист, независимо от того, какие опции я верю или ложь, я больше никогда не смогу получить доступ к этой функции. Есть ли способ сделать это?C# Excel защищенный лист

здесь соответствующее определение функции от Microsoft https://msdn.microsoft.com/en-us/library/office/ff840611.aspx

фрагмент соответствующего кода

warrantySheet.Cells.Locked = false; 
getWarrantySheetUsedRange().Locked = true; 
warrantySheet.Protect(SHEET_PASSWORD,true, true, true,true, true, true, true,false, false,false,false,false, true,true,true); 

здесь является Imgur за то, что я говорю о http://imgur.com/TXjDXdt

+0

пост код, который вы используете – Sorceri

+0

Вам нужно больше информации, то, что вы имеете в виду вы не можете * никогда не получить доступ к этой функции снова *? Вы защищаете электронную таблицу, тогда вы можете использовать UnProtect. –

+0

Вы можете указать во время защиты, что вы разрешаете пользователю делать такие вещи, как строка вставки, ... Я хочу, чтобы все еще можно было использовать «autosum», «average» и другие функции таблицы, даже если лист защищен , – mrseanpaul81

ответ

0

Вы замок использованную диапазон, в котором происходит функция промежуточных итогов (сумма, среднее, количество и т. д.) Предполагая, что на вашем листе только 1 таблица (ListObject). Попробуйте это:

warrantySheet.Cells.Locked = false; 
getWarrantySheetUsedRange().Locked = true; 
warrantySheet.ListObjects[1].TotalsRowRange.Locked = false; 
warrantySheet.Protect(SHEET_PASSWORD,true, true, true,true, true, true, true,false, false,false,false,false, true,true,true); 
Смежные вопросы