Имя: Пароль:
1C
Админ
1С и Excel. Как включить программно автофильтр для защищенного листа
,
0 2S
 
19.04.11
14:12
Что-то туплю
Лист.Range("L4").AutoFilter(1);
Книга.ActiveSheet.Protect("Пароль");
Надо установить защиту листа с возможностью использования автофильтра.
Какой синтаксис Protect? Ставил и 1 после пароля, тогда вообще открывает весь лист на редактирование.(
Такая возможность есть в экселе если интерактивно защищать лист. В макросе ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
       , AllowFiltering:=True
Как в 1С реализовать?
1 2S
 
19.04.11
14:16
гуру VBA имеются?
2 2S
 
19.04.11
14:20
Книга.ActiveSheet.Protect("Пароль",1,1,1);
не работает (
3 2S
 
19.04.11
14:25
ап
4 2S
 
19.04.11
14:40
подниму еще разок
5 KishMish
 
19.04.11
14:54
в редакторе ВБА нажми а1 и ищи протект.
там куча параметров
Name Required/Optional Data Type Description
Password Optional Variant A string that specifies a case-sensitive password for the worksheet or workbook. If this argument is omitted, you can unprotect the worksheet or workbook without using a password. Otherwise, you must specify the password to unprotect the worksheet or workbook. If you forget the password, you cannot unprotect the worksheet or workbook.
DrawingObjects Optional Variant True to protect shapes. The default value is True.
Contents Optional Variant True to protect contents. For a chart, this protects the entire chart. For a worksheet, this protects the locked cells. The default value is True.
Scenarios Optional Variant True to protect scenarios. This argument is valid only for worksheets. The default value is True.
UserInterfaceOnly Optional Variant True to protect the user interface, but not macros. If this argument is omitted, protection applies both to macros and to the user interface.
AllowFormattingCells Optional Variant True allows the user to format any cell on a protected worksheet. The default value is False.
AllowFormattingColumns Optional Variant True allows the user to format any column on a protected worksheet. The default value is False.
AllowFormattingRows Optional Variant True allows the user to format any row on a protected. The default value is False.
AllowInsertingColumns Optional Variant True allows the user to insert columns on the protected worksheet. The default value is False.
AllowInsertingRows Optional Variant True allows the user to insert rows on the protected worksheet. The default value is False.
AllowInsertingHyperlinks Optional Variant True allows the user to insert hyperlinks on the worksheet. The default value is False.
AllowDeletingColumns Optional Variant True allows the user to delete columns on the protected worksheet, where every cell in the column to be deleted is unlocked. The default value is False.
AllowDeletingRows Optional Variant True allows the user to delete rows on the protected worksheet, where every cell in the row to be deleted is unlocked. The default value is False.
AllowSorting Optional Variant True allows the user to sort on the protected worksheet. Every cell in the sort range must be unlocked or unprotected. The default value is False.
AllowFiltering Optional Variant True allows the user to set filters on the protected worksheet. Users can change filter criteria but can not enable or disable an auto filter. Users can set filters on an existing auto filter. The default value is False.
AllowUsingPivotTables Optional Variant True allows the user to use pivot table reports on the protected worksheet. The default value is False.

их все надо указывать с скобахпо порядку
6 KishMish
 
19.04.11
14:55
+(5) AllowFiltering - предпоследний
7 KishMish
 
19.04.11
14:56
+(5) нажми F1 то бишь хелп
оно же тут вроде
http://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.worksheet.protect.aspx
8 2S
 
19.04.11
15:07
(7) да пробывал
Книга.ActiveSheet.Protect("Пароль",,,,,,,,,,,,,,1);
все равно не работает
9 2S
 
19.04.11
15:16
+(8)
Книга.ActiveSheet.Protect("123",0,1,1,1,0,0,0,0,0,0,0,0,1,1,0);
блокируется весь лист все равно
10 KishMish
 
19.04.11
15:18
а макросом в Екселе работает?

если да, то создай файл-шаблон с записанным макросом. его заполняй и вызывай макрос
11 2S
 
19.04.11
15:19
макросом работает
нафиг, макросом бух поработет, защитит лист с установленным флажком использования автофильтра сама :)
12 2S
 
19.04.11
15:21
судя по всему фича какая-то
находил темы похожие, проблма не решалась
13 KishMish
 
19.04.11
15:25
Есть макроязык в екселе (не ВБА) - возможно там можно будет установить через Application.ExecuteExcel4Macro(СрокаМакроЯзыка)
14 KishMish
 
19.04.11
15:26
думаю все из за того что тип параметра ВАРИАНТ. ты передаешь число, преобразования не происходит.
как то так
15 KishMish
 
19.04.11
15:27
насчет макроса. можно написать макрос и вызвать его програмно из 1С комнадой RUN(ИмяПроцедуры)
16 KishMish
 
19.04.11
15:38
вот жэтот код уменя все нормально работает
блокирует лист и разрешает фильтр
17 KishMish
 
19.04.11
15:38
Excel = CreateObject("Excel.Application");
   НоваяКнига = Excel.WorkBooks.Add();             //Делаем нову. книгу
   ЛистыЖе= НоваяКнига.Sheets;//Сколько же тут страниц
   Excel.Visible=1;
   
   
   ПервыйЛист=НоваяКнига.Sheets(1);    
   ПервыйЛист.PageSetup.Orientation = 2;
   ПервыйЛист.Select();
   ПервыйЛист.Cells(1,1).Value = 1;
   ПервыйЛист.Cells(1,2).Value = 2;
   ПервыйЛист.Cells(2,1).Value = 3;
   ПервыйЛист.Cells(2,2).Value = 4;
   ПервыйЛист.Range("A2").AutoFilter(1);
   ПервыйЛист.Protect("123",0,1,1,1,0,0,0,0,0,0,0,0,1,1,0);
18 Tatitutu
 
19.04.11
15:39
(0)
все намного проще
это старая фича
//так не работает
Книга.ActiveSheet.Protect("Пароль");
//а так заработает
Книга.ActiveSheet.Protect(12345);
19 KishMish
 
19.04.11
15:40
+(17) ексель 2007
20 FN
 
19.04.11
15:45
ф=Ексель.Cells.Select; //выделяем все ячейки
ф=Ексель.Selection.Columns.AutoFit; //автоширина для выделенного фрагмента (весь лист)
ф=Ексель.Selection.AutoFilter;
...
Если Защита=2 тогда
       Ексель.ActiveSheet.Protect("ненадосниматьзащиту!",1,1,1,0,0,1,1,1,0,0,0,0,1,1,0); //защитим лист
   ИначеЕсли Защита=3 тогда
       Ексель.ActiveSheet.Protect("ненадосниматьзащиту!",1,1,1,0,0,0,0,0,0,0,0,0,1,1,0); //защитим лист
   КонецЕсли;

точно работает
21 smaharbA
 
19.04.11
15:57

//*******************************************
Процедура Сформировать()
   Перем Ексель,Книги,Книга,Листы,Лист,Ячейки,Ячейка;
   Ексель=СоздатьОбъект("Excel.Application");
   Книги = Ексель.Workbooks;
   Книга=Книги.Add();
   Листы = Книга.Worksheets;
   Лист = Листы.Item(1);
   Ячейки=Лист.Cells;
   Для Сч=1 По 10 Цикл
       Ячейка=Ячейки.Item(Сч+1,1);
       Ячейка.Value=Сч;
   КонецЦикла;
   Диапазон=Лист.UsedRange;
   Колонки = Диапазон.Columns;
   Диапазон = Ячейки.Range(Диапазон.Cells(1, 1), Диапазон.Cells(1, Колонки.Count));
   Диапазон.AutoFilter();
   Лист.Protect(123, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0);
   Ексель.Visible=-1;
КонецПроцедуры
22 2S
 
19.04.11
16:18
о, спасибо
будет завтра чем заняться :)