Поговорим как скрывать листы, а также как показывать скрытые листы в Excel, в том числе разберем как можно отобразить очень скрытые листы с помощью Visual Basic.
Приветствую всех, дорогие читатели блога TutorExcel.Ru.
Время от времени возникает необходимость прятать листы в Excel либо от посторонних глаз других пользователей, либо уже от самих себя, чтобы эти самые листы не отвлекали и не мешали работать.
Также возникает и обратная необходимость — в частичном или полном отображении скрытых листов. В общем давайте рассмотрим различные способы реализации как скрытия, так и отображения листов.
Как показать скрытый лист в Excel?
Чтобы открыть скрытый лист обратно мы также в нижней панели правой кнопкой мыши щелкаем по любому из листов и выбираем команду Показать. В появившемся окне можно посмотреть все невидимые листы книги (даже если он всего один) и выбрать какой именно лист необходимо вывести на экран:
Со скрытием и отображением листов разобрались, давайте перейдем к чуть более сложной задаче, а именно научимся скрывать лист так, чтобы обычный пользователь не смог его отобразить.
Полное скрытие листов в Эксель (суперскрытые)
Как мы уже обозначили выше, проблема обычного скрытия листов в Excel заключается в том, что отобразить их сможет каждый, у кого есть доступ к документу. Если же данное действие выполняется не только для наведения эстетической красоты в книге, но и для защиты данных, потребуется выполнить несколько дополнительных действий, предварительно активировав в программе режим разработчика, если этого не было сделано ранее.
- Откройте меню «Файл» и перейдите к разделу «Параметры».
- В появившемся окне нажмите «Настроить ленту» и установите галочку в чекбоксе пункта «Разработчик», расположенном в блоке «Основные вкладки». Нажмите «ОК» для подтверждения внесенных изменений и закрытия настроек.
Как сделать очень скрытый лист в Excel?
Параметры отображения любого листа в Excel мы можем настроить посредством Visual Basic. Переходим в редактор Visual Basic (на панели вкладок выбираем Разработчик -> Код -> Visual Basic или воспользуемся комбинацией клавиш Alt + F11):
В левой верхней части окна в списке выбираем нужный нам лист и чуть ниже подробно смотрим в блок с настройками (если он изначально не отображается, то уже в панели вкладок Visual Basic выбираем View -> Properties Window и блок появится).
За отображение листа в параметрах отвечает свойство Visible и как мы видим всего есть 3 варианта:
- xlSheetVisible. Лист открыт и отображается во вкладках;
- xlSheetHidden. Лист скрыт, но отображается в списке невидимых листов;
- xlSheetVeryHidden. Лист скрыт и нигде не отображается.
Таким образом, чтобы скрыть лист средствами Visual Basic указываем значение параметра xlSheetHidden, а чтобы показать устанавливаем xlSheetVisible.
Из названия последнего значения xlSheetVeryHidden и взялся термин очень скрытого листа, но в принципе также часто можно встретить употребление выражение супер скрытого. При этом, что очень важно, установить значение параметра xlSheetVeryHidden можно только через Visual Basic, что и не позволяет обычному пользователю обнаружить очень скрытые листы стандартным способом.
Вернемся к нашему примеру.
Так как мы в начале скрывали Лист1, то для него установлена видимость xlSheetHidden, а нас сейчас интересует как раз 3 вариант. Выбираем его и теперь в списке скрытых листов пусто (кнопка в данном случае не активна, хотя мы знаем, что очень скрытые листы в книге на самом деле есть):
Теперь пользователь не увидит такой супер скрытый лист в интерфейсе Excel, однако он все же сможет его обнаружить если зайдет в редактор Visual Basic.
Если же стоит задача найти такие листы и отобразить их, то повторяем аналогичные действия и в Visual Basic для подобных листов устанавливаем параметр xlSheetVisible, после чего все листы станут видимыми.
Суперскрытый лист
162996 21.10.2012
Иногда некоторые листы в книге приходится скрывать от глаз пользователей. Классический способ предполагает скрытие листа через меню Формат — Лист — Скрыть или правой кнопкой по ярлычку листа — Скрыть (Hide):
Проблема в том, что пользователь, зайдя в меню Формат — Лист — Отобразить или щелкнув правой кнопкой мыши по ярлычку любого листа и выбрав Показать (Unhide), будет видеть имена скрытых листов и понимать, что часть информации от него скрыта:
Поэтому лучше сделать так, чтобы пользователь и не догадывался о присутствии в книге каких-то скрытых листов. Для этого открываем редактор Visual Basic:
- в Excel 2003 и старше — выбрав в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor)
- в Excel 2007 и новее — нажав на кнопку Редактор Visual Basic (Visual Basic Editor) на вкладке Разработчик (Developer) или нажав ALT+F11
Ищем на экране вот такое окно:
Если его не видно, то можно его отобразить через меню View — Project Explorer (верхняя часть) и View — Properties Window (нижняя часть).
В верхней части на «дереве» находим и выделяем наш лист (на картинке — Лист1), а в нижней части находим свойство Visible (в конце списка) и делаем его xlSheetVeryHidden.
Вуаля! Теперь увидеть этот лист и узнать о его существовании можно только в редакторе Visual Basic и ни в каких окнах и менюшках Excel он отображаться не будет. Меньше знаешь — крепче спишь.
Ссылки по теме
- 4 уровня защиты в файлах Excel
- Скрытие листов оптом с помощью надстройки PLEX
Volna
21.10.2012 13:55:05
Лист я спрятала, но теперь макрос, который его использует его не видит. Подскажите, пожалуйста, что нужно написать, чтобы макрос нашел спрятанный лист? Ссылка
squadra
21.10.2012 13:55:37
Sheets(«List»).Visible = -1 текст макроса Sheets(«list»).Visible = 2 т.е. мы сначала показываем лист, потом его прячем….. Родитель Ссылка
Александр
21.10.2012 13:56:30
Добрый день! Возможно не нашел.. Иногда макрос скрывает листы…. потом чтобы отобразить нужно делать много лишних телодвижений (формат-лист-отобразить) и так раз 20 подряд…. можно это как то упростить?. Ссылка
Александр
21.10.2012 13:57:09
Вот макрос, который открывает все скрытые листы в книге (кроме скрытых методом VeryHidden)
Sub UnHideAllSheets() Dim x As Integer x = 0 MsgBox («В Книге всего » + Str(Application.ActiveWorkbook.Sheets.Count) + » листа(ов)») For Each sh In ActiveWorkbook.Worksheets If sh.Visible = False Then x = x + 1 If sh.Visible = False Then sh.Visible = True Next If x = 0 Then MsgBox («Похоже, в книге нет скрытых листов, прочь параною!») If x > 0 Then MsgBox («Открыто » + Str(x) + » скрытых листа(ов)») End Sub |
Родитель Ссылка
user
21.10.2012 13:57:50
Алекс, спасибо огромное!! очень полезная вещь =) Родитель Ссылка
Orxan
21.10.2012 13:58:38
Спасибо, что все это бесплатно. Ссылка
Николай Павлов
21.10.2012 13:59:44
Родитель Ссылка
Владимир Капитонов
24.01.2016 21:59:57
Немного дополненный макрос от Александра, должен показать все скрытые листы.
Sub UnHideAllSheets() Dim x As Integer Dim sh As Worksheet x = 0 MsgBox («В Книге всего » + CStr(Application.ActiveWorkbook.Sheets.Count) + » листа(ов)») For Each sh In ActiveWorkbook.Worksheets If sh.Visible = False Then x = x + 1 If sh.Visible = xlSheetVeryHidden Or _ sh.Visible = xlSheetHidden Then x = x + 1 sh.Visible = xlSheetVisible End If Next If x = 0 Then MsgBox («Похоже, в книге нет скрытых листов, прочь параною!») If x > 0 Then MsgBox («Открыто » + CStr(x) + » скрытых листа(ов)») End Sub |
Ссылка
Собир Мажидов
29.06.2019 17:43:31
Чем отличается от кода Александра? Родитель Ссылка
Руслан
27.03.2017 12:59:32
Народ, а каким образом можно снова его открыть? Ссылка
Симон Светлана
08.11.2017 01:05:22
Действительно, интересует вопрос как открыть спрятанный лист снова. Выше представленные макросы показывают, что есть спрятаный лист, и я знаю какой это лист. Но как его снова открыть? Через View — Properties Window этого не сделаешь и Формат — Лист — Отобразить
тоже не подходит. Ссылка
Николай Павлов
08.11.2017 01:11:03
Как скрыли, так и верните обратно. Открыть редактор Visual Basic (Alt+F11), выделить суперскрытый лист в панели Project Explorer (там всегда видны все листы) и потом в панели Properties поменять ему свойство Visible обратно на xlSheetVisible. Родитель Ссылка
Симон Светлана
08.11.2017 01:26:13
Пишет, что нельзя установить свойство Visible класса Worksheet. Защита с листа и книги снята. Ссылка
Николай Павлов
08.11.2017 09:29:29
Странно. Светлана, если возможно прислать файл мне на почту для вивисекции — посмотрю. Родитель Ссылка
Симон Светлана
08.11.2017 09:35:42
Хорошо, я Вам перешлю — самой интересно или я чего не понимаю, или действительно есть проблема. Ссылка
Dmitry B
26.11.2017 22:49:08
Столкнулся с тем, что суперскрытый лист отображается в окне Сведения о книге в разделе Защита книги. Там отображаются все защищенные листы, в том числе и суперскрытые, если на них поставлен пароль. Вывод — на суперскрытый лист пароль не ставим. Ссылка
Дмитрий Вайткявичус
06.12.2017 13:16:41
Добрый день! Можно ли сделать суперскрытыми часть листов, без перечисления всех нужных и присвоения атрибута каждому по отдельности? Например, только те, которые имеют диапазон (Name) от Sheet22 до Sheet33? Спасибо! Ссылка
Nikolay Greynert
24.12.2017 18:57:00
У меня тоже пишет, что нельзя установить свойство Visible класса Worksheet. Какое решение? Ссылка
Кирилл Крицкий
17.12.2018 17:48:06
Добрый вечер. Помогите пожалуйста допилить код. Проблема в том, что после того как срабатывает макрос и открывается копированный лист «Форма заказа для клиента», не получается скрыть обратно лист в первоначальном файле. А нужно чтобы скрытый оставался скрытым, но в таком случае макрос на файле перестает работать. В целом все работает, кроме этого момента.
Sub Печать_Кнопка1_Щелчок() On Error Resume Next Sheets(«Форма заказа для клиента»).Visible = 1 Const REPORTS_FOLDER = «Заказы\Для клиентов» MkDir ThisWorkbook.Path & «\» & REPORTS_FOLDER ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & «\» & REPORTS_FOLDER Filename = Application.GetSaveAsFilename(«Расчет для клиента Заказ № .xls», «Книга Excel(*.xls),», , _ «Введите имя файла для сохраняемого отчёта», «Сохранить») If VarType(Filename) = vbBoolean Then Exit Sub Err.Clear: Worksheets(«Форма заказа для клиента»).Copy: DoEvents If Err Then Exit Sub If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = «» Then ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook Application.DisplayAlerts = False Sheets(«Форма заказа для клиента»).Visible = 2 End If End Sub |
Ссылка
Как скрыть лист?
Если на листе хранятся данные, которые будут нужны в дальнейшем или которые используются для вычисления на других листах, но он мешает работать или просто не нужно его отображение в списке листов, то его можно просто Скрыть. Для этого нажмите на нужном листе ПКМ — Скрыть. Лист не будет видно в окне программы, но он будет сохранен.
Чтобы показать скрытые листы, нужно нажать ПКМ — Отобразить.
Все скрытые листы будут снова показаны на панели.