В Microsoft Excel 2003 есть возможность запретить доступ ко всему файлу с помощью пароля, но иногда вы хотите запретить доступ к определенному листу в Excel. В этой статье я опишу свой способ ввода пароля на конкретном листе.
Сначала я расскажу, что хочу реализовать. Вы открываете файл Excel и попадаете на конкретный лист, к которому у вас есть доступ, и когда вы переключаетесь на другой лист с паролем, появляется форма ввода пароля, а содержимое листа будет скрыто. Другими словами, пользователь, у которого не должно быть доступа к этому листу, не увидит, что там, но если пользователь просто случайно щелкнет по этому листу, у нас будет кнопка для возврата к исходному листу. Все это будет реализовано на VBA (Visual Basic для приложений).
Ставим пароль на доступ к листу Excel
Что ж, давайте начнем, давайте откроем Excel и сохраним его, скажем, под названием «Пароль к рабочему листу». Затем на первом листе в центре напишите «Секретно», а на листе 2 напишите «Публичный лист».
Затем нажмите ALT + F11, чтобы открыть редактор Visual Basic. Затем нажмите Insert-> User Form (чтобы добавить форму в проект). Добавьте в форму две кнопки и текстовое поле.
Измените свойство Caption CommandButton1 на Enter и CommandButton2 на Go Back. Также измените значение заголовка нашей формы (UserForm1), сказав «Введите пароль, чтобы продолжить». Измените свойство TextAlign нашего текстового поля TextBox1 на 2, то есть выравнивание текста по центру. Вы также можете изменить шрифт и размер текста в свойстве Font. Кроме того, в свойстве Text (объекта TextBox1) введите «Введите пароль», чтобы этот текст загружался по умолчанию.
Если вы все сделали правильно, ваш внешний вид должен выглядеть примерно так (кроме размеров объектов):
Код VBA для запрета доступа к листу Excel
Затем введите следующий код в окно кода модуля:
Частная подпрограмма CommandButton1_Click () Если TextBox1.Text = «Мой пароль», то Windows («Пароль для листа.xls»). Visible = True End Else MsgBox «Вы ввели неправильный пароль», vbInformation, «Invalid password» End If End Sub Private Sub CommandButton2_Click () Windows («Пароль для sheet.xls»). Visible = True Worksheets («Sheet2»). Activate End End Sub Private Sub UserForm_Activate () ActiveWindow.Visible = False End Sub Private Sub UserForm_QueryClose (Cancel as Integer, CloseMode as Integer) Cancel = True End Sub
Теперь осталось вызвать этот модуль при активации листа, для этого в редакторе VB выберите лист, на который хотите поставить пароль, дважды щелкните по нему, вы увидите окно кода, вставьте его туда:
Private Sub Worksheet_Activate () UserForm1.Show End Sub
Кроме того, чтобы всегда открывать общедоступный лист по умолчанию, даже в редакторе, выберите «Эта книга», откройте редактор кода (двойной щелчок) и вставьте это:
Листы Private Sub Workbook_Open () («Sheet2»). Активировать конечную подписку
Вы также можете запретить пользователю изменять свой пароль, например. Предположим, человек, который немного знаком с Excel, работает с этим файлом и может легко получить доступ к редактору Visual Basic и изменить пароль. Чтобы этого избежать, установите пароль для редактирования проекта VBA. В редакторе Visual Basic щелкните правой кнопкой мыши VBAProject, откроется меню, выберите «Свойства». Затем в следующем окне перейдите на вкладку «Безопасность», установите флажок, как показано на рисунке, и введите пароль.
Затем отредактируйте код всех макросов, то есть только вы или человек, который знает пароль для проекта VBA, можете запускать код Visual Basic.
Если вы все сделали правильно, при открытии файла откроется «Лист2», а при попытке перейти на «Лист1» будет запущена форма для ввода пароля и при нажатии на кнопку «Назад» вы вернетесь в «Sheet2».
Программа довольно примитивна, но она может помочь начинающим программистам VBA разрабатывать свои более сложные и полезные программы. Так как вы легко можете его изменить, дополнить или использовать для совершенно разных целей. Надеюсь, это вам немного помогло!