powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / После
4 сообщений из 4, страница 1 из 1
После
    #35995827
AkIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые гуру.
У нас возникла проблема по защите данных в excel-ой форме.
После заполнения данными в форме (VFP 9) необходимо вначале закрыть доступ ко всем ячейкам общей книги, состоящей из 2 листов, а затем дать доступ на корректировку отдельныx ячеек.
Закрытие всех ячеек на корректировку:
.Cells.Select()
.Selection.Locked=.t.
* Разрешение корректировки данных ячеек:
.Range("DK4:DK21").Select
.Selection.Locked=.f.
Данные команды на одном листе общей книге, а на втором листе не срабатывают.
Помогите советом, спасибо.
...
Рейтинг: 0 / 0
После
    #35995913
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkIg,

Попробуй явно переключиться на второй лист.
...
Рейтинг: 0 / 0
После
    #35996785
AkIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо glamis, но как мне кажется, я явно переключаюсь:
With LoExcel
.WorkBooks.Open("akt_spis.xls")
SELECT fil_kom
GO top
NOTE выборка pole=............................

Select adr
go top
.................................................
.Range("A2").Value=skl+r
.Range("DH6").Value=dat
.Range("BP7").Value=nd
.Range("CB8").Value=dat_raz
.Range("U9").Value=ALLTRIM(pole)
str_1=16
str_2=4
isum1=0
SCAN
.Range("A"+Allt(Str(str_1))).Value=kss
.Range("H"+Allt(Str(str_1))).Value=oss
.Range("O"+Allt(Str(str_1))).Value=naim1
.Range("BD"+Allt(Str(str_1))).Value=km
.Range("BM"+Allt(Str(str_1))).Value=kei
.Range("BR"+Allt(Str(str_1))).Value=q
.Range("CG"+Allt(Str(str_1))).Value=cn
.Range("CV"+Allt(Str(str_1))).Value=sum_r
.Range("EE"+Allt(Str(str_1))).Value=knu
str_1=str_1+1
isum1=isum1+sum_r
IF naim2#SPACE(15)
if str_1=39
.Sheets("Лист2").select()
str_2=str_1
str_1=4
endif
.Range("O"+Allt(Str(str_1))).Value=naim2
str_1=str_1+1
ENDIF
if str_1=39
.Sheets("Лист2").select()
str_2=str_1
str_1=4
ENDIF
IF str_2=39 .and. str_1=22
EXIT
endif
ENDSCAN
IF str_2#39
.Sheets("Лист2").select()
endif
.Range("CV22").Value=isum1
isum1=0
SELECT fil_kom
GO top
NOTE присвоение переменных
NOTE .Range("....").Value=
NOTE ............................
.Cells.Select()
.Selection.Locked=.t.
.Range("DK4:DK21").Select
.Selection.Locked=.f.
.Range("X26").Select
.Selection.Locked=.f.
.Range("BS26").Select
.Selection.Locked=.f.
.Range("X28").Select
.Selection.Locked=.f.
.Range("BS28").Select
.Selection.Locked=.f.
.Range("X30").Select
.Selection.Locked=.f.
.Range("BS30").Select
.Selection.Locked=.f.
.Range("X32").Select
.Selection.Locked=.f.
.Range("BS32").Select
.Selection.Locked=.f.
.Range("X34").Select
.Selection.Locked=.f.
.Range("BS34").Select
.Selection.Locked=.f.
.Range("X36").Select
.Selection.Locked=.f.
.Range("BS36").Select
.Selection.Locked=.f.
.Range("AF39").Select
.Selection.Locked=.f.
.Range("BG42").Select
.Selection.Locked=.f.
.Sheets("Лист1").select()
.Range("CT4").Select
.Selection.Locked=.f.
.Range("DH5").Select
.Selection.Locked=.f.
.Range("U9").Select
.Selection.Locked=.f.
.Range("DK16:DK39").Select
.Selection.Locked=.f.
.ActiveSheet.Protect("pro_spis",.t.,.t.,.t.)
Endif
.ActiveWorkbook.SaveAs("&fil_v",-4143)
LoExcel.Visible= .T.
Endwith
...
Рейтинг: 0 / 0
После
    #35997401
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkIg,

With LoExcel
.WorkBooks.Open("akt_spis.xls")
SELECT fil_kom
GO top
NOTE выборка pole=............................

Select adr
go top
.................................................
.Range("A2").Value=skl+r
.Range("DH6").Value=dat
.Range("BP7").Value=nd
.Range("CB8").Value=dat_raz
.Range("U9").Value=ALLTRIM(pole)
str_1=16
str_2=4
isum1=0
SCAN WHILE !(str_2=39 .and. str_1=22)
.Range("A"+Allt(Str(str_1))).Value=kss
.Range("H"+Allt(Str(str_1))).Value=oss
.Range("O"+Allt(Str(str_1))).Value=naim1
.Range("BD"+Allt(Str(str_1))).Value=km
.Range("BM"+Allt(Str(str_1))).Value=kei
.Range("BR"+Allt(Str(str_1))).Value=q
.Range("CG"+Allt(Str(str_1))).Value=cn
.Range("CV"+Allt(Str(str_1))).Value=sum_r
.Range("EE"+Allt(Str(str_1))).Value=knu
str_1=str_1+1
isum1=isum1+sum_r
*
* В этом месте подозрительно: если naim2 # spac(15) и str_1 = 39, то
* Может так лучше?
if str_1=39
.Sheets("Лист2").select()
str_2=str_1
str_1=4
endif

IF naim2 # SPACE(15)
.Range("O"+Allt(Str(str_1))).Value=naim2
str_1=str_1+1
ENDIF

ENDSCAN
IF str_2#39
.Sheets("Лист2").select()
endif
.Range("CV22").Value=isum1
isum1=0
SELECT fil_kom
GO top
NOTE присвоение переменных
NOTE .Range("....").Value=
NOTE ............................
*
* Не факт что в этом месте текущий лист - Лист2, а в других местах явного перехода не видно.
*

.Cells.Select()
.Selection.Locked=.t.
=Mylock("DK4:DK21,X26,BS26,X28,BS28,X30,BS30,X32,BS32,X34,BS34,X36,BS36,AF39,BG42"

.Sheets("Лист1").select()
=Mylock("CT4,DH5,U9,DK16:DK39"

.ActiveSheet.Protect("pro_spis",.t.,.t.,.t.)
Endif && лишний endif??????
.ActiveWorkbook.SaveAs("&fil_v",-4143)
LoExcel.Visible= .T.
ENDWITH

********************************************************************
Proc MyLock
PARAMETERS __str
_str=strt(__str+',', ',,', ',')
DO WHILE !EMPTY(_str)
i=AT(',',_str)
_s1=LEFT(_str, i-1)
_str=SUBSTR(_str, i+1)

LoExcel.Range(_s1).Select
LoExcel.Selection.Locked=.t.
Endd
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / После
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]