Скажите: можно-ли установить защиту на определенные ячейки или диапазоны листа, причем на разные диапазоны одного листа разные пароли. Например, чтобы в одном документе работали разные пользователи и могли изменять только определенные ячейки?
Скажите: можно-ли установить защиту на определенные ячейки или диапазоны листа, причем на разные диапазоны одного листа разные пароли. Например, чтобы в одном документе работали разные пользователи и могли изменять только определенные ячейки?Rusel
Private Sub Workbook_Open() Dim sRngAddr As String: sRngAddr = "" Select Case Environ("UserName") Case "ivanov", "petrov": sRngAddr = "B2:C13" Case "sidorov": sRngAddr = "F10:H20" Case "sanya" Case Else MsgBox "Вы не можете открыть эту книгу", vbCritical With ThisWorkbook .Saved = True .Close End With End Select
Sheets(1).ScrollArea = sRngAddr End Sub
[/vba]
паролей никаких нет, но можно контролировать диапазоны доступа разных пользователей
в модуль "ЭтаКнига": [vba]
Code
Private Sub Workbook_Open() Dim sRngAddr As String: sRngAddr = "" Select Case Environ("UserName") Case "ivanov", "petrov": sRngAddr = "B2:C13" Case "sidorov": sRngAddr = "F10:H20" Case "sanya" Case Else MsgBox "Вы не можете открыть эту книгу", vbCritical With ThisWorkbook .Saved = True .Close End With End Select
Sheets(1).ScrollArea = sRngAddr End Sub
[/vba]
паролей никаких нет, но можно контролировать диапазоны доступа разных пользователейСаня
Sub Auto_Open() pswd = InputBox("Введите пароль доступа к файлу(1 или 2):") Select Case pswd Case "1" locked ("B5:D8") Case "2" locked ("E5:G8") Case Else ThisWorkbook.Close True End Select End Sub Sub locked(diap As String) ActiveSheet.Unprotect Cells.locked = True Range(diap).locked = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
[/vba]
Можно еще попробовать такой вариант: [vba]
Code
Sub Auto_Open() pswd = InputBox("Введите пароль доступа к файлу(1 или 2):") Select Case pswd Case "1" locked ("B5:D8") Case "2" locked ("E5:G8") Case Else ThisWorkbook.Close True End Select End Sub Sub locked(diap As String) ActiveSheet.Unprotect Cells.locked = True Range(diap).locked = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
в той самой книге Alt+F11, двойн. щелчок по модулю "ЭтаКнига" (слева область "Project - VBAProject", если ее нет, то Ctrl+R), в этот модуль вставляешь тот код, меняешь придуманных пользователей на своих, адрес после пользователей - это как раз адрес, где пользователю позволено "тусоваться" если адреса нет (как у San'и), то ограничений нет. Sheets(1).ScrollArea = sRngAddr - на первом по-порядке листе все это и применяется.
осталось только пользователям включить макросы (демонический смех)
Quote (Rusel)
А как это работает?
в той самой книге Alt+F11, двойн. щелчок по модулю "ЭтаКнига" (слева область "Project - VBAProject", если ее нет, то Ctrl+R), в этот модуль вставляешь тот код, меняешь придуманных пользователей на своих, адрес после пользователей - это как раз адрес, где пользователю позволено "тусоваться" если адреса нет (как у San'и), то ограничений нет. Sheets(1).ScrollArea = sRngAddr - на первом по-порядке листе все это и применяется.
осталось только пользователям включить макросы (демонический смех) Саня
в файле Jhonsonа пароль запрашивается только при открытии документа? И если пользователь вошел, то нажав Alt F11, может посмотреть остальные пароли?
в файле Jhonsonа пароль запрашивается только при открытии документа? И если пользователь вошел, то нажав Alt F11, может посмотреть остальные пароли?Rusel
Кликаем правой кнопкой на VBAProject(Имя Файла) в открывшемся меню выбираем VBAProject Properties... Далее на закладке Protection ставим галочку и вводим пароль!
Не вижу трудностей с паролем на VBAProject:
Кликаем правой кнопкой на VBAProject(Имя Файла) в открывшемся меню выбираем VBAProject Properties... Далее на закладке Protection ставим галочку и вводим пароль!Jhonson
"Ничто не приносит людям столько неприятностей, как разум."