-
Этот код должен блокировать только заданную в range группу ячеек:
Source_xls.Sheets[1].Activate; Sheet := Source_xls.Sheets[1]; Range := Sheet.Range['A1:E2']; Range.FormulaHidden := False; Range.Cells.Locked := True; Source_xls.ActiveSheet.EnableSelection := xlUnlockedCells; // выбирать только незаблокированные Source_xls.ActiveSheet.Protect('123');
В результате блокируется весь лист.
-
Отвечаю сам себе
Дело в том, что по умолчанию все ячейки листа заблокированы. Прежде чем защитить заданную группу ячеек надо разблокировать все другие ячейки или сначала разблокировать все.
Source_xls.Sheets[1].Activate; Sheet := Source_xls.Sheets[1]; Range := Sheet.Range['A1:E100']; Range.Cells.Locked := False; Range := Sheet.Range['A1:E2']; Range.FormulaHidden := False; Range.Cells.Locked := True; Source_xls.ActiveSheet.EnableSelection := xlUnlockedCells; // выбирать только незаблокированные Source_xls.ActiveSheet.Protect('123');
Все работает.
|