Как задать пароли для защиты отдельных листов Excel для разных пользователей?
В Excel можно задать разные пароли для разных листов: один пользователь будет вносить изменения на одном листе с помощью своего пароля, а другой — использовать другой пароль для работы с другим листом. Однако иногда возникает необходимость, чтобы каждый пользователь имел доступ только к своему собственному листу — мог просматривать и работать исключительно с ним. Можно ли реализовать такое в Excel?
Чтобы защитить каждый лист отдельно и ограничить доступ к листам по пользователям, примените приведённый ниже код VBA:
1. Откройте новую рабочую книгу и создайте новый лист с именем «Main» (см. снимок экрана):

2. Затем нажмите клавиши «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic for Applications. В левой панели в разделе «Project-VBAProject» дважды щёлкните по элементу «ThisWorkbook», чтобы открыть пустой модуль кода, и вставьте туда приведённый ниже код VBA (см. снимок экрана):
Код VBA: задание паролей для защиты отдельных листов по пользователям
Option Explicit
Dim gUserName As String
Dim gUserPass As String
Private Sub Workbook_Open()
'Updateby ExtendOffice
Dim xWShs As Sheets
Dim xWSh As Worksheet
Dim xUserName As String
Dim xPass As String
Dim xBolH As Boolean
GTINPUT:
xUserName = InputBox("Enter the user name")
If TypeName(xUserName) = "String" Then
If xUserName = "" Then
Exit Sub
End If
End If
xUserName = LCase(xUserName)
xPass = InputBox("User name:" & xUserName & Chr(13) & Chr(10) & "Enter the password:")
If TypeName(xPass) = "String" Then
If xPass = "" Then
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End If
Else
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End If
Set xWShs = Worksheets
xBolH = False
For Each xWSh In Worksheets
If xWSh.Name = xUserName Then
xBolH = True
Exit For
End If
Next
If xBolH Then
Set xWSh = xWShs(xUserName)
On Error GoTo GTINPUT2
xWSh.Unprotect (xPass)
xWSh.Visible = True
xWSh.Activate
Else
Set xWSh = xWShs.Add
xWSh.Name = xUserName
xWSh.Activate
End If
gUserName = xUserName
gUserPass = xPass
Exit Sub
GTINPUT2:
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim xWSh As Worksheet
On Error Resume Next
Set xWSh = Worksheets(gUserName)
xWSh.Protect Password:=gUserPass, DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
For Each xWSh In Worksheets
If xWSh.Name <> "Main" Then
xWSh.Visible = xlSheetVeryHidden
End If
Next xWSh
ActiveWorkbook.Save
End Sub

3. Затем установите курсор в конец скрипта «Private Sub Workbook_Open()» и нажмите клавишу «F5», чтобы запустить код. В появившемся диалоговом окне укажите имя пользователя, для которого нужно создать лист (см. снимок экрана):

4. После этого нажмите кнопку «OK» и во вновь открывшемся диалоговом окне задайте пароль для защиты листа (см. снимок экрана):

5. Нажмите кнопку «OK» — и новый лист с именем пользователя будет создан сразу же. Теперь вы можете добавить на него необходимые данные для этого пользователя (см. снимок экрана):

6. Повторите описанные выше действия — с шага 3 по шаг 5 — чтобы последовательно создать остальные листы, которые вы хотите использовать.
7. После создания листов сохраните текущую книгу, выбрав «Файл» > «Сохранить как». В диалоговом окне «Сохранить как» укажите имя файла и выберите формат «Книга Excel с поддержкой макросов (*.xlsm)» из раскрывающегося списка «Тип файла» (см. снимок экрана):

8. Затем нажмите кнопку «Сохранить», чтобы сохранить файл.
9. После этого закройте книгу и откройте её снова, затем нажмите «Включить содержимое» в верхней части строки формул, чтобы активировать код.

10. Теперь появится диалоговое окно, запрашивающее имя пользователя и пароль для открытия соответствующего листа конкретным пользователем.
11. Наконец, при отправке этой книги другим пользователям обязательно передайте каждому его имя пользователя и пароль. Благодаря этому они смогут открывать и редактировать только свои собственные листы и не получат доступа к другим рабочим листам.
Лучшие инструменты повышения продуктивности в Office
Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…
Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу
- Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
- Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!
Все надстройки Kutools — один установщик
Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.
- Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
- Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
- Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
- 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
- Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек