Как сделать невидимым лист в excel для других?

Поговорим как скрывать листы, а также как показывать скрытые листы в Excel, в том числе разберем как можно отобразить очень скрытые листы с помощью Visual Basic.

Приветствую всех, дорогие читатели блога TutorExcel.Ru.

Время от времени возникает необходимость прятать листы в Excel либо от посторонних глаз других пользователей, либо уже от самих себя, чтобы эти самые листы не отвлекали и не мешали работать.

Также возникает и обратная необходимость — в частичном или полном отображении скрытых листов. В общем давайте рассмотрим различные способы реализации как скрытия, так и отображения листов.

Как показать скрытый лист в Excel?

Чтобы открыть скрытый лист обратно мы также в нижней панели правой кнопкой мыши щелкаем по любому из листов и выбираем команду Показать. В появившемся окне можно посмотреть все невидимые листы книги (даже если он всего один) и выбрать какой именно лист необходимо вывести на экран:

Со скрытием и отображением листов разобрались, давайте перейдем к чуть более сложной задаче, а именно научимся скрывать лист так, чтобы обычный пользователь не смог его отобразить.

Полное скрытие листов в Эксель (суперскрытые)

Как мы уже обозначили выше, проблема обычного скрытия листов в Excel заключается в том, что отобразить их сможет каждый, у кого есть доступ к документу. Если же данное действие выполняется не только для наведения эстетической красоты в книге, но и для защиты данных, потребуется выполнить несколько дополнительных действий, предварительно активировав в программе режим разработчика, если этого не было сделано ранее.

  1. Откройте меню «Файл» и перейдите к разделу «Параметры».
  2. В появившемся окне нажмите «Настроить ленту» и установите галочку в чекбоксе пункта «Разработчик», расположенном в блоке «Основные вкладки». Нажмите «ОК» для подтверждения внесенных изменений и закрытия настроек.

Как сделать очень скрытый лист в 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

Ссылка

Как скрыть лист?

Если на листе хранятся данные, которые будут нужны в дальнейшем или которые используются для вычисления на других листах, но он мешает работать или просто не нужно его отображение в списке листов, то его можно просто Скрыть. Для этого нажмите на нужном листе ПКМ — Скрыть. Лист не будет видно в окне программы, но он будет сохранен.

Чтобы показать скрытые листы, нужно нажать ПКМ — Отобразить.

Все скрытые листы будут снова показаны на панели.

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]