![]() |
![]() |
![]() |
|
Как прочитать защищенный от изменения лист ₽ |
☑ | ||
---|---|---|---|---|
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)
хм ... а так работает .. спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |