Я искал указанную проблему с различными ключевыми словами, но все результаты были либо связаны с тем, как защитить книгу, либо снять с нее защиту, не зная пароля.
Моя текущая проблема на самом деле не является большой проблемой, но она кажется такой странной, что я хочу знать, сталкивались ли с ней другие люди.
В настоящее время я делаю макросы 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 Я считаю, что это не проблема с листом.Защита. Моя проблема возникает независимо от того, защищены ли рабочие листы и ячейки, и меня особенно беспокоят позиции и имена рабочих листов, которые попадают в команду workbook.protect.
Изменить 2:
Таким образом, проблема заключается в следующем и не касается разницы между методами Workbook.Protect
и Worksheet.Protect
:
1. Я открываю защищенную книгу;
2. Запускаю предоставленный фрагмент кода без< /strong> снятие защиты книги, так как это не влияет на защиту листа;
3. Защита книги отменена предыдущим действием, несмотря на мои намерения. Приходится снова защищать книгу.
Workbook.Protect
защищает книгу от взаимодействия с пользователем — общие действия, связанные с книгой (например, добавление/удаление/перемещение листов), которые отправляются из пользовательского интерфейса, но не из кода. Чтобы защитить листы, вы должны использовать методWorksheet.Protect
, который работает так же, как и для изменений кода. - person Vitaliy Prushak   schedule 31.01.2020