Страница: 1 |
Страница: 1 |
Вопрос: Защита листа с помошью VBA
Добавлено: 08.04.09 07:23
Автор вопроса: anna
Guys, помогите плиз с одной проблемой. Только начинаю свое знакомство с программирование в Excel, посему немного сложновато((( Файл содержит макрос, который при нажатии, проверяет имя юзера с списком разрешенных юзеров,и если имя совпадает, макрос распароливает следующий лист с калькуляциями и перекидывает туда юзера (если нет, то файл закрывается). Как сделать так, чтобы лист с калькуляциями, по-прежнему оставался запароленным, кроме нескольких ячеек. Заранее спасибо!!!!!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #1
Добавлено: 08.04.09 09:33
А можно пример кода?
Номер ответа: 2
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #2
Добавлено: 08.04.09 09:52
Зайди на запароленый лист, установи защиту листа с разрешением изменения нужных диапазов. В коде макроса, найди строчку
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 08.04.09 10:53
anna,
Чтобы часть листа была доступна, надо для требуемых ячеек/диапазонов на листе снять защиту
Можно макросом, можно и вручную - когда защита листа отключена, выделяешь ячейки/диапазоны, нажимаешь Формат ячеек (Ctrl+1) и на вкладке Защита снимаешь галочку "Защищаемая ячейка", потом снова ставишь защиту листа - все. Теперь пользователю дозволено работать в строго определенных ячейках (можешь выделить их цветом заливки для ясности юзера).
Ты сказала "калькуляции". Магическое слово, как часто мне приходится с ними работать.. )) Родная стихия можно сказать )) А в какой ты отрасли трудишься, если не секрет?
Номер ответа: 4
Автор ответа:
anna
Вопросов: 1
Ответов: 4
Профиль | | #4
Добавлено: 09.04.09 03:39
Вот пример кода
Sub UserName_test()
Dim Current_user As Variant
 im Allowed_users As Variant
Current_user = Environ("username"
Allowed_users = "........."
If InStr(1, Allowed_users, Current_user) = 0 Then
MsgBox "Sorry, you do not have access rights to use this file. The file will be closed automatically.", vbCritical, "Error!"
With ActiveWorkbook
.RunAutoMacros xlAutoClose
.Close (Savechanges = False)
End With
Else
Application.ScreenUpdating = False
Sheets("Sensitivity".Unprotect Password:=".........."
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
Sheets("Sensitivity".Select
Application.ScreenUpdating = True
End If
End Sub
Номер ответа: 5
Автор ответа:
anna
Вопросов: 1
Ответов: 4
Профиль | | #5
Добавлено: 09.04.09 07:42
Получилось!!! Так просто оказывается))))))))
Номер ответа: 6
Автор ответа:
anna
Вопросов: 1
Ответов: 4
Профиль | | #6
Добавлено: 09.04.09 07:56
to mc-black....
Вручную не получилось бы((( ибо пароль в макросе не мэтчился бы с паролей на листе - тобиш error, а если бы пароли были бы одинаковыми, то макрос просто распороливал бы полностью следующий лист...Но эт уже не важно, сейчас все получилось))))))))
А работаю я в отрасли под названием Нефтегазодобывающая. Нужно было одну небольшую модельку подправить, а я раньше с макросами как-то не особо работала....
Номер ответа: 7
Автор ответа:
anna
Вопросов: 1
Ответов: 4
Профиль | | #7
Добавлено: 09.04.09 07:57
Спасибо огромное!!!!!!!!!