Ограничение места использования книги (Microsoft Excel)
Шэй работает с волонтерской организацией, и они разработали рабочую тетрадь Excel специально для своих волонтеров. Они не хотят, чтобы ее копировали или передавали посторонним лицам, поэтому Шей задается вопросом, есть ли способ защитить книгу, чтобы она работала только на определенном компьютере и ни на каком другом.
Есть способы усилить безопасность книг, но есть некоторые соображения, которые следует принять во внимание, прежде чем выбирать лучший способ.
Поймите, что практически любой подход в той или иной степени доставит неудобства пользователям. Кроме того, ваш подход может зависеть от того, находятся ли пользователи исключительно в вашей внутренней сети или они добровольцы, не подключенные к вашей сети.
Самый простой способ начать — просто защитить книгу паролем, а затем сообщить его добровольцам. Двойной недостаток этого состоит в том, что любой пароль, который вы передадите своим волонтерам, будет продолжать работать после того, как они перестанут быть волонтерами, и для всех, кому волонтеры могут передать рабочую тетрадь. Это верно, даже если вы делаете индивидуальный пароль для каждого добровольца.
Любой другой подход основывается на добавлении макросов в книгу.
Прекрасный способ макроса — проверить имя компьютера, на котором открывается книга. Это пример такого макроса:
Private Sub Workbook_Open() Dim sComputerName As String Dim sPossible As String Dim sTemp As String sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]" sPossible = sPossible & "[Computer2][Computer3]" sComputerName = Environ("computername") sTemp = "[" & sComputerName & "]" If InStr(sPossible, sTemp) Then MsgBox "Welcome to the workbook." Else MsgBox "You are not authorized to open this workbook." Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False End If End Sub
Идея макроса заключается в том, что вы должны определить в строке sPossible имена каждого компьютера, на котором разрешено открывать книгу. Все, что вам нужно сделать, это убедиться, что имена компьютеров написаны правильно и заключить их в квадратные скобки в строке sPossible. Функция Environ возвращает фактическое имя компьютера, оно помещается в переменную sTemp в скобках, а затем функция InStr используется для проверки, есть ли он в списке возможных компьютеров.
Если это так, то отображается окно сообщения; в противном случае отображается окно сообщения, и книга закрывается без сохранения изменений.
Если вы предпочитаете что-то даже более безопасное, вы также можете использовать функцию Environ для возврата «http://username-password.com/[username]»
значение, которое даст вам имя пользователя для учетной записи, используемой на компьютере.
Этот макро-подход относительно прост, но он требует знания имен компьютеров (и / или имен пользователей), прежде чем он будет работать должным образом. Также предполагается, что пользователь недостаточно знает об Excel, чтобы обойти макросы, удерживая клавишу Shift при запуске программы. Если вы подозреваете, что пользователь может знать это, вам необходимо предпринять дополнительные шаги, например следующие:
-
Убедитесь, что в книге отображается единственный лист. Все остальные рабочие листы должны быть «очень скрыты», чтобы пользователь не мог отображать их обычными способами.
-
Если макрос определяет, что пользователю разрешено, скройте единственный видимый рабочий лист и сделайте видимыми все «очень скрытые» рабочие листы.
-
Когда рабочая книга закрыта, отмените процесс и скройте все рабочие листы (установите для свойства Visible каждого из них значение xlSheetVeryHidden) и снова сделайте отдельный рабочий лист видимым.
Использование этого подхода гарантирует, что даже если пользователь отключит макросы (удерживая клавишу Shift во время запуска), он или она не сможет получить доступ к рабочим листам, потому что макрос необходим, чтобы сделать их видимыми.
Вы можете использовать вариант вышеупомянутого подхода, чтобы вместо того, чтобы полагаться на функцию Environ, вы могли бы проверить макрос на наличие заранее определенного файла в определенном месте в системе.
Это, конечно, означает, что вам нужен способ заблаговременно получить доступ к системе, чтобы поместить нужный файл в нужное место.
Наконец, какой бы подход на основе макросов вы ни выбрали, вы должны убедиться, что проект VBA для книги защищен паролем. Это помешает кому-то пойти и взглянуть на ваш код макроса, чтобы выяснить, что происходит с защитой.
Есть еще кое-что, о чем вы всегда должны помнить, пытаясь обезопасить свои рабочие тетради: любые меры безопасности, которые вы вводите, всегда можно обойти, проявив достаточно знаний и терпения. Если ваши пользователи не так уж технически опытны, у вас не должно возникнуть проблем. Однако, если они много знают об Excel и макросах, то все ставки отменены.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13666) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.