#xml #vba #excel #ms-office #ribbon
#xml #vba #excel #ms-office #лента
Вопрос:
Я хочу отключить кнопку копирования / вырезания на ленте Excel для определенной книги, чтобы, когда книга доступна другим пользователям, они не могли использовать эти две кнопки.
Мы можем редактировать CustomUI.xml отключить кнопки, что очень просто. Однако пользователи, имеющие доступ к этой книге, также могут редактировать XML-файл, чтобы включить кнопки. Это нежелательно.
Я могу защитить редактор VB книги Excel паролем. Поэтому, если VB может контролировать ленту, это было бы хорошо. Однако я не нашел способа сделать это.
Есть ли у VB какой-либо способ проверить, отключены ли кнопки? Если пользователи (люди, имеющие доступ к этой книге) включили кнопки, отредактировав xml, VB обнаружит это и скроет листы, а также покажет предупреждающее сообщение и т.д.
(Я также использую VB для отключения ctrl c, ctrl x, чтобы пользователи не могли копировать и вырезать)
Комментарии:
1. Мне любопытно, какова логика, стоящая за этим? Это, безусловно, не обеспечит никакой защиты, поскольку, как только книга открыта, если пользователь отключает макросы, ваша «защита от копирования» не выполняется
2. Существуют механизмы принудительного использования макросов — то, что я сделал, это скрыл листы с помощью vb перед закрытием книги, и vb отобразит их при повторном открытии книги. Если пользователи не включают макросы, они не смогут видеть листы.
3. Но все равно можно их отображать. Безопасность с помощью Obscurity не очень надежна. Если вы действительно хотите скрыть код, напишите DLL на C . Если вы хотите скрыть данные, зашифруйте их и получите к ним доступ с помощью какого-либо кода, отличного от VBA.
4. Спасибо за ваше предложение 🙂 Я видел комментарии в Интернете о том, что Excel ни в коем случае не является безопасным (вы можете не согласиться, что я не знаю), а механизмы, которые я использовал здесь, и тому подобное, не являются надежными. Я говорил об этом со своим руководителем, но он настоял, чтобы я попытался добавить некоторую безопасность, насколько это возможно. Однако мне любопытно, как пользователь мог взломать защиту паролем VB code? Какой способ отображать листы, когда макросы отключены, в моем механизме? А что касается «зашифровать его и получить к нему доступ с помощью некоторого кода, отличного от nonVBA», не могли бы вы подробнее описать возможные подходы?
5. Интересно, что у вашего руководителя такие конфиденциальные данные в таком небезопасном состоянии. Я уже шел по этому пути раньше. Если бы вы могли проанализировать с ним степень безопасности, необходимую для этого файла, тогда вы узнаете, стоит ли хранить его в Excel. Просто говорю.
Ответ №1:
Этого можно добиться, удалив группу буфер обмена с главной вкладки на ленте.
Перейдите в Файл ==> Опция ==> Настроить ленту
затем выберите Main Tabs
для ленты, которую вы хотите настроить. Затем выделите буфер обмена в домашней группе и выберите удалить.
Комментарии:
1. Но пользователи могут добавить ее обратно прямо сейчас: (Хотя спасибо за ответ
Ответ №2:
Что вы можете попробовать, так это убедиться, что весь рабочий лист заблокирован, а затем защитить весь рабочий лист паролем. Это отключает выделение ячеек и, следовательно, копирование невозможно.
- Выделите весь лист целиком, щелкните правой кнопкой мыши и затем отформатируйте ячейки (или Ctrl1)
- Перейдите на вкладку «Защита«, отметьте «Заблокировано», затем ОК
- Главная лента -> Группа ячеек -> Форматирование -> Защита листа (AltTPP)
-
Введите надежный пароль и убедитесь, что флажок «Выбрать заблокированные ячейки» не установлен
(вы даже можете заблокировать все листы разными паролями) -
Нажмите OK и сохраните книгу (возможно, вам захочется установить другой пароль, прежде чем ее можно будет открыть)
Теперь пользователи не могут выбрать ни одной ячейки на листе и фактически отключили функцию Выбрать все / Копировать. Однако они могут скопировать лист в новую книгу с той же функцией (невозможно выделить какие-либо ячейки внутри).
Обратите внимание, что существует программное обеспечение для взлома большинства видов защиты, но это должно быть связано с блокировкой вашего пакета функций.
Комментарии:
1. Спасибо за ваш ответ, но тогда он будет доступен только для чтения, верно? Пользователи должны иметь возможность редактировать, но не копировать / вырезать. И спасибо, что напомнили мне о возможности нарушения защиты 🙂 Можете ознакомиться с комментариями под вопросом.
2. Возможно, вы можете создать пользовательскую форму для изменения формул?