Всегда открывать редактируемую книгу (Microsoft Excel)
Патрик интересуется, как запретить Excel открывать книги в защищенном режиме. Он хочет, чтобы файл открывался в обычном режиме, чтобы любой мог открыть его, прочитать и отредактировать.
Ответ полностью зависит от того, что подразумевается под «защищенным просмотром». Если вы имеете в виду, что хотите, чтобы рабочие листы были незащищены, это относительно легко сделать с помощью макроса. Если вы действительно говорите о том, что Excel называет «защищенным просмотром», то это совершенно другая ситуация.
Если вы хотите убедиться, что книга не защищена, чтобы ее можно было редактировать после открытия, то такой простой макрос может помочь:
Private Sub Workbook_Open() ThisWorkbook.Unprotect End Sub
Конечно, это не снимает защиту с отдельных листов. Это включает в себя еще несколько шагов, поскольку вам нужно циклически пройти через каждый рабочий лист в книге. Следующие макросы следует поместить в модуль ThisWorkbook для книги, листы которой вы хотите снять без защиты:
Private Sub Workbook_BeforeClose(Cancel As Boolean) ' Reprotect sheets that were protected on open workbook Call ReprotectSheets ' Save changes in ThisWorkbook ThisWorkbook.Save End Sub
Private Sub Workbook_Open() ' Unprotect all sheets in this workbook Call UnprotectAllSheets End Sub
Обратите внимание, что макросы делают немного больше, чем вызывают другие макросы, которые выполняют реальную работу. Эти другие макросы можно разместить в стандартном модуле книги:
Public arrProtectedSheets() Sub ReprotectSheets() ' Reprotect worksheets that were protected on WorkbookOpen Dim i As Integer For i = LBound(arrProtectedSheets) To UBound(arrProtectedSheets) ThisWorkbook.Worksheets(arrProtectedSheets(i)).Protect Next i End Sub
Sub UnprotectAllSheets() ' Unprotect all worksheets in this workbook Dim wks As Object Dim i As Integer i = 0 For Each wks In ThisWorkbook.Sheets If IsSheetProtected(wks) Then ' Remember names of protected sheets in order ' to reprotect them on WorkbookClose ReDim Preserve arrProtectedSheets(i) arrProtectedSheets(i) = wks.Name i = i + 1 ' Unprotect sheet wks.Unprotect End If Next wks End Sub
Private Function IsSheetProtected(ByRef wks As Excel.Worksheet) As Boolean ' Function returns TRUE If Worksheetsheet Is Protected With wks IsSheetProtected = (.ProtectContents Or _ .ProtectScenarios Or .ProtectDrawingObjects) End With End Function
Идея макроса UnprotectAllSheets заключается в том, что он проходит через каждый рабочий лист в книге, и, если он защищен (определяется в макросе IsSheetProtected), имя рабочего листа сохраняется в массиве. Затем содержимое массива используется в макросе ReprotectSheets, чтобы еще раз повторно защитить эти рабочие листы. Этот подход, конечно, предполагает, что ни один из защищенных листов не связан с паролем.
Если вы действительно хотите убедиться, что настоящий «Защищенный просмотр»
выключен, это отдельная история. Параметры защищенного просмотра контролируются для каждой системы в Центре управления безопасностью. Вы можете увидеть настройки, выполнив следующие действия:
-
Отобразите ссылку: / excelribbon-Displaying_Excels_Developer_Tab [вкладка разработчика] на ленте.
-
Щелкните Macro Security в группе Code. Excel отображает диалоговое окно «Центр управления безопасностью».
-
В левой части диалогового окна щелкните Защищенный просмотр. (См. Рис. 1.)
Фактические доступные параметры Protection View зависят от используемой версии Excel. Как уже упоминалось, эти настройки контролируются на системном уровне; они не обрабатываются отдельно для каждой книги. В результате их невозможно обойти с помощью кода макроса. Если бы они могли, то это сделало бы систему полностью уязвимой для любого кода в открываемой книге — мы бы вернулись во времена макровирусов, которые были обычным явлением для некоторых более ранних версий продуктов Office.
Дополнительную информацию о том, как работают настройки защищенного просмотра, можно найти на этом веб-сайте Microsoft:
https://support.office.com/en-us/article/what-is-protected-view-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653?ocmsassetID=HA010355931&CorrelationId=fce5243e-6c41-4865-89e9-530f125ea252&ui=en-US&rs=en-US&ad=US
Будет ли книга открываться в режиме защищенного просмотра или нет, зависит от системных настроек пользователя. Это означает, что контроль над тем, что открывается, полностью зависит от отдельного пользователя и не может быть «принудительным» автором книги. Однако есть способы смягчить последствия этого, и они связаны с доверием. Обратите внимание, что в левой части диалогового окна «Центр управления безопасностью» есть три параметра, которые управляют этим по отношению к книгам:
Надежные издатели. * Книги всех издателей, перечисленных в этой области, являются доверенными и открываются напрямую, минуя защищенный просмотр.
Надежные расположения. * Книги, хранящиеся в местах, перечисленных в этой области, являются доверенными и открываются напрямую, минуя защищенный просмотр.
Надежные документы. * Отдельные книги, указанные в этой области, являются доверенными и открываются напрямую, минуя защищенный просмотр.
Таким образом, чтобы ваша книга могла обойти защищенный просмотр, вам необходимо быть доверенным издателем, книга должна храниться в надежном месте или быть отмечена в системе как надежный документ.
Все эти настройки, опять же, находятся под контролем пользователя и не могут быть изменены с помощью кода макроса.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (12873) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.