
У меня есть рабочая книга с большим количеством листов, макросов и вычислений. Теперь мне нужно отправить этот лист (не предвиделось до вчерашнего дня). Как мне заблокировать его, чтобы пользователи:
- не можете получить доступ/увидеть макросы?
- не можете отобразить скрытые листы?
- не можете увидеть код или добавить код/
Я прошел и разблокировал те ячейки, которые я хочу изменить. Скрыл строки кнопок и формул, а затем заблокировал их. Скрыл рабочие листы. Теперь я защитил рабочий лист паролем.
Однако,мешает ли это пользователям получить доступ к макросам/коду?илиотобразить листы?Если нет, как мне правильно/надежно/полностью заблокировать рабочую книгу?
Похоже на защиту типа «старшего брата», но я просто хочу убедиться, что все взаимосвязанные ячейки не будут случайно изменены или не будет запущен макрос, который мне не нужен.
Большое спасибо
Майкл.
решение1
Во-первых, обратите внимание, что большинство функций защиты в ExcelнетФункции безопасности. Большинство из них довольно легко взломать или обойти. Они хороши для предотвращения случайного повреждения, но не остановят никого, кто знает, что делает, и действительно хочет увидеть то, что вы спрятали.
Итак, вот несколько ответов:
Начальная защита
Вы рассмотрели это, в основном запирать ячейки и прятать вещи и необходимые.
Затем защититькаждыйлист.
Затем защитите саму книгу.
Очень скрытые листы
Листы можно сделать "очень" скрытыми, это означает, что их можно будет отобразить только через VBA (они не отображаются в списке показа в интерфейсе). Это делается просто через строку VBA, которую нужно запустить хотя бы один раз, чтобы вызвать изменение настройки, и не нужно сохранять в файле после запуска (но это может быть полезно, чтобы помнить, какие листы отобразить позже):
Sheets("Sheet1").Visible = xlVeryHidden
Скрытый код VBA
Установите пароль на свой проект. В редакторе VBA щелкните правой кнопкой мыши по модулю в Project Explorer
, выберите <ProjectName> Properties
и установите пароль на Protection
вкладке.
Обратите внимание, что их можно взломать методом перебора.
Скрытые макросы
Полагаю, вы имеете в виду, что не хотите, чтобы они появлялись в списке макросов, когда кто-то открывает окно Run Macro
?
Для этого задайте для нужного макроса имя a Private Sub
или a Function
. Это сделает их невидимыми как макросы, но позволит вызывать их из другого кода в том же модуле.
Я не думаю, что вы не можете помешать людямбегвидимые макросы и нельзя назначать скрытые макросы кнопкам.
решение2
Если вы хотите, чтобы получатели не меняли случайно некоторые биты, защиты Excel будет достаточно. Но если есть конфиденциальные данные, которые вы не хотите, чтобы получатели книги могли видеть, они бесполезны.
Если вы хотите отобразить только данные, а не форматирование, простой способ «стереть» все скрытые данные — экспортировать каждый лист в формате CSV, а затем повторно импортировать их в виде новой книги Excel. (Второй шаг, строго говоря, необязателен, но люди не привыкли к файлам CSV, поэтому лучше отправить файл Excel, как они ожидают.)
Если вы хотите получить презентабельный результат, который люди не смогут изменить, распечатайте листы в файл PDF и отправьте его.