Имя: Пароль:
1C
 
Защита ячеек в Excel
0 MarKo
 
10.08.06
12:21
Люди помогите !
В 1С формируется файл xls. Нужно установить защиту на изменения на весь лист за исключением отдельных ячеек. Защиту с паролем.

Ексель = Новый COMОбъект("Excel.Application");
Прайс = Ексель.WorkBooks.Add();
Лист = Прайс.WorkSheets(1);
сч = 4;
Лист.UnProtect("");
Пока ВыборкаНом.Следующий() Цикл
    Лист.Cells(сч,1).Value  = ВыборкаНом.Наименование;
    ......    
    Лист.Cells(сч,7).Locked = Истина; // снимаю защиту с отдельной ячейки
    сч = сч +1;
КонецЦикла;
Лист.Cells.Locked = ложь; // устанавливаю защиту на весь лист
Лист.Protect("пароль");

проблема в том, что защита (пароль устанавливается) устанавливается на выделение ячеек, а на изменение объектов не устанавливается.

В чем тут проблема ?
Помогите, кто знает....
1 а лю 427
 
10.08.06
12:35
а причем здесь 8-ка?
2 MarKo
 
10.08.06
12:50
я екселевский файл из 8-ки формирую (прайс)
3 MarKo
 
10.08.06
12:52
ошибочка вышла, защита вообще не устанавливается, никакая
4 MarKo
 
10.08.06
12:53
неужели никто не знает ..... или лень писать ?
5 а лю 427
 
10.08.06
12:54
лень писать...
6 MarKo
 
10.08.06
12:55
ну пожалуста .... сама никак не разбирусь, второй день уже колупаюсь.
7 Темный Эльф
 
10.08.06
12:59
Locked Property

True if the object is locked, False if the object can be modified when the sheet is protected.
8 а лю 427
 
10.08.06
13:01
(7) в тему.... прямо в точку...
9 MarKo
 
10.08.06
13:07
поставила Лист.Cells.Locked = истина;

установилась защита на весь лист, а мне надо на отдельную ячейку снять защиту...
Насколько я знаю, если это делать из Excel, надо снять защиту с ячейки, а потом установить защиту листа. И будет защищен весь лист, кроме данной ячейки.


а как это осущ. через 1С ?
10 Темный Эльф
 
10.08.06
13:08
(9)Лист.Cells(сч,7).Locked = Ложь;
11 MarKo
 
10.08.06
13:09
не проходит, все равно весь лист защищен
12 Темный Эльф
 
10.08.06
13:12
У тебя что сначала? Лист.Cells.Locked = истина; или Лист.Cells(сч,7).Locked = Ложь; ? И разберись, что такое защита листа, а что такое защита ячейки. Есть свойство Locked, есть метод Protect. То есть пишешь Лист.Cells(сч,7).Locked = Ложь; для всех ячеек, которые должны быть доступны. Затем пишешь Protect для закрытия всех остальных ячеек. Если же ты после Лист.Cells(сч,7).Locked = Ложь; пишешь Лист.Cells.Locked = истина;, то у тебя и будет все заблокировано.
13 Надо наоборот
 
10.08.06
13:17
Сначала надо защитить лист, а потом с нужных ячеек снять защиту. Проверено, формируется прайс, где можно менять значения только в заданных ячейках.
14 MarKo
 
10.08.06
13:18
То что написал Темный Эльф сработало, спасибо.

Попробую еще второй вариант.....
15 MarKo
 
10.08.06
13:20
Второй вариант, тоже работает....

Спасибо, ребята, за помощь.