Иногда требуется скрыть от чужих глаз информацию на каком-то листе. Часто это требуется делать для защиты "от дурака", как это называется. Например, на листе хранятся данные для выпадающих списков, изменять и видеть которые пользователь не должен. Можно было бы листы просто удалить - но ведь на листах есть информация, которая необходима для работы файла. Чтобы была возможность ограничить доступ к определенным листам книги и данным на них разработчики Excel предоставили нам неплохую возможность - скрывать листы. Т.е. лист все так же будет находится в книге и у формул будет к нему доступ, но он не будет отображаться - ярлычка не будет. Звучит замечательно, а делается еще проще: щелкаем правой кнопкой мыши по ярлычку листа, который хотим скрыть и выбираем пункт Скрыть
Для версий 2003 и ниже скрытие листа через контекстное меню листов недоступно и там придется действовать через основное меню: Формат
Примечание: невозможно скрыть лист, если это единственный лист в книге, о чем Excel и сообщит при попытке это сделать.
Но что делать, если с этим листом все же необходимо работать или в скрытом листе отпала надобность? Как теперь
Выбираем нужный лист в списке и жмем Ок. Выбранный лист отобразится.
Но отобразить скрытые таким образом листы сможет любой пользователь. Чтобы хоть как-то защитить листы от отображения любым пользователем, можно установить защиту на книгу: вкладка Рецензирование
Если книгу защищать не желательно или нет возможности, но скрывать листы с защитой от отображения все же необходимо - можно сделать такой лист Очень скрытым через редактор VBA.
Скрыть только определенные листы активной книги можно следующим кодом:
Sub Hide_Sheets() Dim ws, aSheets aSheets = Array("Лист1", "Списки", "Лист2") 'через запятую перечисляем листы для скрытия(обязательно в кавычках) For Each ws In aSheets ActiveWorkbook.Sheets(ws).Visible = xlSheetHidden 'отобразить – xlSheetVisible; сделать лист очень скрытым - xlSheetVeryHidden Next wsSh End Sub |
Скрыть все листы в активной книге, кроме листа с именем "Видимый", можно следующим кодом:
Sub Hide_All_Sheets() Dim wsSh As Object ActiveWorkbook.Sheets("Видимый").Visible = xlSheetVisible 'сначала сразу делаем видимым нужный лист For Each wsSh In ActiveWorkbook.Sheets If wsSh.Name <> "Видимый" Then wsSh.Visible = xlSheetHidden 'отобразить – xlSheetVisible; сделать лист очень скрытым - xlSheetVeryHidden Next wsSh End Sub |
Также см.:
Как сделать лист очень скрытым
Снять защиту с листа(без пароля)
Снять защиту с книги(без пароля)
А как сделать, чтоб ссылки на скрытый лист работали и открывали лист, но не отображали в раскрытой книге при выходе с листа? Спасибо.
Только кодом VBA. На форуме обсуждалось:http://www.excel-vba.ru/forum/index.php?topic=123.0
Советую туда тоже захаживать.