Защита рабочей книги не защищена независимо от пароля (VBA Excel 2010) - PullRequest
3 голосов
/ 31 января 2020

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

Моя текущая проблема на самом деле не большая проблема, но она кажется настолько странно, что я хочу знать, испытывали ли это другие люди.

В настоящее время я делаю макросы Excel 2010 VBA для автоматизации обработки данных. Я добавляю защиту рабочей книги, чтобы пользователи не могли перемещать позицию рабочих таблиц. Я сделал это через VBA 'thisworkbook.protect' или через традиционное меню Excel.

Когда я запускаю следующий код, защита рабочей книги полностью исчезает независимо от паролей, настроек структуры / окна.

Sub test()
        ThisWorkbook.Worksheets(1).Cells(1, 1).Value(11) = ThisWorkbook.Worksheets(3).Cells(1, 1).Value(11)
End Sub

Простое добавление thisworkbook.protect в конце кода блокирует рабочую книгу и решает проблему, поэтому это не большая проблема. Но это явление совершенно непонятно для меня.

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

edit 1 Я считаю, что это не проблема worksheet.protect. Моя проблема возникает независимо от того, защищены ли рабочие листы и ячейки, и меня особенно беспокоит положение и имена рабочих листов, которые попадают в команду workbook.protect.

Редактировать 2:
Таким образом, проблема заключается в следующем и не касается различия между Workbook.Protect и Worksheet.Protect методами:
1. Я открываю защищенную книгу;
2 Запустите предоставленный фрагмент кода без снятия защиты с рабочей книги, поскольку это не влияет на защиту рабочей таблицы;
3. Защита рабочей книги отменяется предыдущим действием, несмотря на мои намерения. Приходится снова защищать книгу.

1 Ответ

1 голос
/ 12 февраля 2020

ОК, ответ от Microsoft был следующим:

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

Мой отчет был немедленно закрыт, поэтому у меня не было возможности настаивать на этой ошибке.

Так что они буквально говорят это это «особенность» (ожидаемая функция), а не ошибка. Очевидно, они считают, что защита рабочей книги не является функцией безопасности, единственная надежная защита - это шифрование рабочей книги с помощью пароля, который вам действительно нужно ввести, прежде чем вы сможете просмотреть .

ИМХО, это все еще ошибка и непредвиденное поведение. Но Microsoft, очевидно, не волнует, что очень спорно, так как эта ошибка означает, что защита рабочей книги бесполезно и только останавливает пользователей от случайно разрушающей что-то.

1018 * Так как вы нашли обходной путь, так как вы знаете, что вы можете повторно защитить его после запуска кода такого типа, или же вы не используете эту «функцию», вызывающую ошибку.

Но все же любой, кто знает об этой ошибке, может использовать ее для удаления защита рабочей книги от любой рабочей книги. Я не вижу способа предотвратить удаление. И поскольку эта ошибка уже работает в Excel 2010, а также в последних версиях, маловероятно, что Microsoft исправит это в ближайшем будущем.

...