Имя: Пароль:
1C
 
Как прочитать защищенный от изменения лист
0 lamme
 
12.01.10
08:26
Есть прайс-ексель. он открывается.
у него в доступе для редактирования - только одна колонка.
Все остальные - защищены от изменения неким паролем.

Хочу прочитать построчно этот файл.

в ответ ругается
LastRow=обЭксел.Cells(1,1).SpecialCells(11).Row;
{E:\TEMP\ЗАГРУЗКА ИЗ ЕКСЕЛЯ.ERT(31)}: Microsoft Office Excel: Нельзя использовать данную команду на защищенном листе. Чтобы снять защиту, используйте команду ''Снять защиту листа''
1 Rovan
 
гуру
12.01.10
08:30
(0) читай поячейно
2 lamme
 
12.01.10
08:32
все равно не даст
скажет тоже самое - что данный лист защищен от изменения.

команда
LastRow=обЭксел.Cells(1,1).SpecialCells(11).Row; - получает количество строк на листе

а и на нее ругается
3 skunk
 
12.01.10
08:36
ихмается мне, что надо снимать защиту с листа
4 lamme
 
12.01.10
08:37
ихмается мне - что тож ...
5 skunk
 
12.01.10
08:40
Range("D6:D10").Select();
ActiveSheet.Unprotect();

только вот как программно ввести пароль я хз
6 los_hooliganos
 
12.01.10
08:40
Эксель = СоздатьОбъект("Excel.Application");
   Книга = Эксель.Application.Workbooks.Open(Файл,0,0,1,"***");
   Книга.Sheets("БАЗА ДАННЫХ ТОВАРА").Select();    
   //Сообщить(Книга.ActiveSheet.Cells(6,6).Value );
   Книга.ActiveSheet.Unprotect();
////Открываем файл
   тзТаблицаИзЭкселя = СоздатьОбъект("ТаблицаЗначений");
   Состояние("Загрузка данных из Экселя...");
   Результат = ОбъектРиК_СКЛ.ЗагрузитьТаблицуИзЕкселя(СокрЛП(Файл),тзТаблицаИзЭкселя,
   "C3:F?",,"БАЗА ДАННЫХ ТОВАРА",Эксель,
   //<СписокНомеровКолонок>
   //,<ИмяЛиста>,
   //<СсылкаНаExcel>,
   0);
   Книга.ActiveSheet.Protect();
7 Stim
 
12.01.10
08:41
а если выгрузить в табличный документ весь лист?
8 los_hooliganos
 
12.01.10
08:43
(5) пароль так:
Книга.ActiveSheet.Unprotect(СокрЛП(Пароль));
9 lamme
 
12.01.10
08:44
кто ж его знает -пароль то ...
10 PaulBC
 
12.01.10
08:45
(2) что такое обЭксел? Может все-таки так?
LastRow=обЭксел.Sheets(1).Cells(1,1).SpecialCells(11).Row;
11 los_hooliganos
 
12.01.10
08:45
(9) ты не знаешь пароля на снятие защиты с листа?
а кто знает тогда?
вариант: перед чтением предложить пользователю указать пароль интерактивно.
12 lamme
 
12.01.10
08:47
(10)
   Попытка
       обЭксел  = СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
       Возврат;
   КонецПопытки;

(11)
пароль не знаю.

Общая задача такая - есть прайсы поставщика (товар, код, колво, цена)
Чтобы вручную не забивать все эти позиции в 1С - можно написать программку-чтоб она вытаскивала из екселя.

Когда лист не запоролен - все работает
А тут - споткнулся
13 PaulBC
 
12.01.10
08:47
+(10) или так:
LastRow=обЭксел.Sheets(1).UsedRange.Row + обЭксел.Sheets(1).UsedRange.Rows.Count - 1;
14 lamme
 
12.01.10
08:53
(13)
щас попробую
15 lamme
 
12.01.10
08:56
(13)
хм ... а так работает ..
спасибо
2 + 2 = 3.9999999999999999999999999999999...