2015-10-25 2 views
0

У меня есть большой файл Excel с несколькими листами и модулями. В коде для каждого из них мне нужно временно защищать или защищать защищенный паролем лист, чтобы обновить некоторые защищенные части.Объявить глобальную переменную для пароля листа

До сих пор я использую одну из следующих строк, которая работает, но это означает, что пароль появляется несколько раз по всему коду. Есть ли способ, которым я могу объявить этот пароль только один раз, как глобальную переменную, а затем просто ссылаться на эту переменную, когда это необходимо, чтобы ее нужно было изменить только один раз, если это необходимо для изменения? Кроме того, это уменьшит безопасность файла?

Текущий код:
Чтобы защитить лист:

ActiveSheet.Protect Password:="MyPassword", UserInterfaceOnly:=True 

Чтобы снять защиту листа:

ActiveSheet.Unprotect Password:="MyPassword" 
+0

Если безопасность представляет собой серьезную проблему, обратите внимание, что excel, вероятно, не является правильным выбором. Пароль, хранящийся в виде строки VBA, легко извлекается у кого-то, кто знает [как взломать пароль проекта VBA] (http://stackoverflow.com/questions/1026483/is-there-a-way-to-crack -The-пароль-на-ан-первенствовать-Vba-проекта). – Ioannis

ответ

2
  1. В редакторе VB, щелкните правой кнопкой мыши на проекте, а затем Вставить> Модуль
  2. Назовите это чем-то полезным, например «Константы»
  3. Включить следующее заявление:

    Public Const strPwd as String = "MyPassword"

Это необязательно вводить константу, так что «как String» часть вниз по вкусу. Вы можете использовать эту константу в любом месте вашего проекта, где ранее использовалась бы буквальная строка пароля.

Что касается безопасности, лучше всего сделать это, чтобы убедиться, что вы сами защитили проект VB с надежным паролем. Вы можете изучить варианты здесь, в VB IDE> Инструменты> Свойства VBAProject> Защита.

+0

Большое спасибо - это здорово и помогает! – TaneMahuta

1

Вы можете использовать этот код в качестве примера

Option Explicit 

Public Const g_strPASSWARD As String = "MyPassword" 

' To Protect 
Sub ProtectSheet(ByRef shToProtect As Worksheet) 

    shToProtect.Protect Password:=g_strPASSWARD, UserInterfaceonly:=True 

End Sub 


'To Protect 
Sub UnprotectSheet(ByRef shToUnprotect As Worksheet) 

    shToUnprotect.Unprotect Password:=g_strPASSWARD 

End Sub 


' To Use 
Sub MyTest() 

    ProtectSheet ActiveSheet 

    UnprotectSheet ActiveSheet 

End Sub 

Я надеюсь, что это помогает.

+0

Большое спасибо за это! – TaneMahuta

+0

Добро пожаловать. –