Отключить окно редактора кода VBA в Excel 2010

Я ищу возможность добавить дополнительный уровень безопасности к моим проектам Excel.

У нас несколько пользователей. Некоторые, кто знает (и должен знать) пароль, открывающий макросы VBA. Другие не должны иметь к ним доступ.

Я не уверен, что у кого-то есть пароль, которого не должно быть (изменение пароля не остановило фальсификацию), поэтому я хотел бы отключить окно редактирования VBA для любого неутвержденного пользователя. Я не могу найти способ сделать это, возможно ли это?

Я не могу отключить опцию сохранения, так как всем пользователям необходимо сохранять данные.

Я пытался отключить значки ленты и т. д., но безуспешно. По-прежнему можно открыть окно кода с помощью Alt+F11.

Любая помощь будет здорово.


person user931348    schedule 06.09.2011    source источник


Ответы (1)


Я исхожу из Excel 2003, но эта концепция должна работать и для вас. Вы могли подумать о

  • захват клавиши Alt-F11 (Application.OnKey "%{F11}" "MyNullSub") плюс
  • отключить соответствующие пункты меню (Application.CommandBars(...).FindControl(ID:=..).OnAction = "MyNullSub")

с участием

Sub MyNullSub()
' do nothing
End Sub

как зависимость записи в реестре, которая должна присутствовать (GetSetting(...)), но это поможет только до тех пор, пока этот дополнительный секрет не будет распространен так же, как, по-видимому, (измененные) пароли.

person MikeD    schedule 06.09.2011
comment
Как одобренные пользователи получат доступ к редактору VB? Кроме того, если неутвержденный пользователь решит не разрешать макросы при открытии книги, этот захват не будет работать. - person Jean-François Corbett; 07.09.2011
comment
@Jean, как я уже писал: как зависимость от параметра реестра, т. Е. Ловушка будет размещена только в том случае, если определенный ключ реестра НЕ присутствует. Суперпользователям будет предложено установить определенный ключ ниже настроек HKEY_CURRENT_USER\Software\VB и VBA .... это второй уровень защиты .... как я сказал выше, это также не супер безопасный и поддельный механизм защиты, но лучше чем ничего - person MikeD; 07.09.2011
comment
Хорошо, теперь я понял. Я уверен, что трюк с ключом реестра будет распространяться намного медленнее, чем пароль! +1, потому что я думаю, что на этот вопрос нет хорошего ответа, но это довольно близко! - person Jean-François Corbett; 07.09.2011
comment
@Jean Мне было интересно, и я изучил это дело немного дальше. Я начал использовать механизм аутентификации базы данных. то есть пользователь должен ввести UN и PW, а VBA пытается подключиться и запустить фиктивный запрос. Если получится - хорошо, если не выход. Работает довольно круто и снимает часть головной боли. Это довольно безопасно благодаря основному сетевому протоколу. Я расширю это и попытаюсь пройти аутентификацию с помощью безопасного веб-сайта (SSL). - person MikeD; 16.09.2011