:: Visual Foxpro, Foxpro for DOS
Защита ячеек в Excel
seg856

Сообщений: 272
Дата регистрации: 23.09.2010
Для формирования отчетов из программы FoxPro использую шаблоны .xlt.
В шаблоне часть ячеек имеют признак "Защищаемая ячейка", часть не имеют.
В программе я создаю на основе шаблона документ Excel, вывожу данные, защищаю с пустым паролем.
По замыслу ячейки с признаком "Защищаемая ячейка" мы не можем редактировать, а остальные можем.
Но почему-то этот признак в документе Excel не сохраняется. Все ячейки оказываются недоступны для редактирования.
Если же создаю документ Excel на основе шаблона вручную, то все нормально.
С чем это связано?
Ratings: 0 negative/0 positive
Re: Защита ячеек в Excel
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Репро-кода нет, что тут можно сказать ещё...
Ну кроме того что у меня всё работает как положено
oXl = CREATEOBJECT("Excel.Application")
oBook = oXl.Workbooks.Add("tmp1.xltx")
oBook.Sheets(1).Protect("")
oBook.SaveAs("report.xlsx")
oBook.Close()
oXl.Quit()
RELEASE oBook, oXl
Все ячейки кроме тех где снят флажок "защиты" ругаются при попытке их поменять, со снятым флажком - позволяют себя менять.
Excel 2013.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Защита ячеек в Excel
seg856

Сообщений: 272
Дата регистрации: 23.09.2010
А как из программы foxpro поменять признак "Ячейка защищена"?

cQ=[oWb.worksheets(1).Range("e]+ALLTRIM(trans(lnIter+1))+[").locked=.t.]
&cQ

Так не получается.
Ratings: 0 negative/0 positive
Re: Защита ячеек в Excel
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
И на кой чёрт тут макро? Равно как и обращения по "стилю ссылок A1" при программной манипуляции не так удобны как в стиле R1C1, а точнее просто по "номерам строк и колонок"
lnIter = 2
oWb.WorkSheets(1).Cells(m.lnIter+1, 5).Locked = .F.
Для задания диапазонов можно воспользоваться таким вариантом (WITH просто для сокращения писанины - чтобы не повторять везде oWb.WorkSheets(1) или там loSheet - если сделать переменную со ссылкой на лист):
WITH oWb.WorkSheets(1)
.Range(.Cells(3, 5), .Cells(4, 7)).Value = "SomeText"
ENDWITH
В "координатах" сначала идёт номер строки, потом номер столбца - в отличие от стиля A1.

Свойство Locked соответствует флажку "защищаемая ячейка", т.е. при .T. ячейка заблокирована (при включении защиты листа), а при .F. - наоборот, всегда доступна.
И да, никаких проблем - всё работает как положено.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 30 kornienko_ru  (Гостей: 29)

© 2000-2024 Fox Club 
Яндекс.Метрика