Я могу использовать свойства листа Excel, чтобы определить, защищен ли лист (Worksheet.Protection, Worksheet.ProtectContents и т. д.).
Как с помощью VBA узнать, была ли защищена вся книга?


Worksheet.ProtectedContents - это то, что вам нужно использовать на каждом рабочем листе.
Итак, я бы создал такой цикл:
Public Function wbAllSheetsProtected(wbTarget As Workbook) As Boolean
Dim ws As Worksheet
wbAllSheetsProtected = True
For Each ws In wbTarget.Worksheets
If ws.ProtectContents = False Then
wbAllProtected = False
Exit Function
End If
Next ws
End Function
Функция вернет True, если каждый лист защищен, и False, если есть какие-либо незащищенные листы. Надеюсь, это то, что вы искали.
Ответ нашел сам:
Мне нужны свойства Workbook.ProtectStructure и Workbook.ProtectWindows.
Спасибо, но я не это ищу. Все листы можно защитить без защиты книги. Мне нужно, чтобы книга была защищена, чтобы пользователь не мог отображать скрытые листы. Я сам нашел ответ: Workbook.ProtectStructure и Workbook.ProtectWindows.