Макрос excel для скрытия листа

Суперскрытый лист

Иногда некоторые листы в книге приходится скрывать от глаз пользователей. Классический способ предполагает скрытие листа через меню Формат — Лист — Скрыть или правой кнопкой по ярлычку листа — Скрыть (Hide):

very_hidden_sheet3.png

Проблема в том, что пользователь, зайдя в меню Формат — Лист — Отобразить или щелкнув правой кнопкой мыши по ярлычку любого листа и выбрав Показать (Unhide), будет видеть имена скрытых листов и понимать, что часть информации от него скрыта:

very_hidden_sheet4.png

Поэтому лучше сделать так, чтобы пользователь и не догадывался о присутствии в книге каких-то скрытых листов. Для этого открываем редактор Visual Basic:

  • в Excel 2003 и старше — выбрав в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor)
  • в Excel 2007 и новее — нажав на кнопку Редактор Visual Basic (Visual Basic Editor) на вкладке Разработчик (Developer) или нажав ALT+F11 

Ищем на экране вот такое окно:

very_hidden_sheet1.gif

Если его не видно, то можно его отобразить через меню View — Project Explorer (верхняя часть) и View — Properties Window (нижняя часть).

В верхней части на «дереве» находим и выделяем наш лист (на картинке — Лист1), а в нижней части находим свойство Visible (в конце списка) и делаем его xlSheetVeryHidden.

very_hidden_sheet2.gif

Вуаля! Теперь увидеть этот лист и узнать о его существовании можно только в редакторе Visual Basic и ни в каких окнах и менюшках Excel он отображаться не будет. Меньше знаешь — крепче спишь. :)

Ссылки по теме

  • 4 уровня защиты в файлах Excel
  • Скрытие листов оптом с помощью надстройки PLEX

В статье «Как скрыть /отобразить страницу в Excel» мы рассмотрели как вручную открыть/ скрыть лист книги, все то же самое можно сделать и написав простой VBA макрос:

Sub Макрос1 ()
ActiveWindow.SelectedSheets.Visible = False 'Прячем активный лист
Sheets ("Лист2").Visible = False 'Прячем лист с именем "Лист2", можно аналогично отобразить лист обращаясь к нему по имени, но с параметром 'true'
End Sub

Лист так же можно скрыть и вручную из редактора VBA. Зайдем в редактор (Alt+F11) и кликнув на соответствующий лист, в настройках в параметре Visible  выберем интересующий нас статус видимости листа, в том числе статус «VeryHidden», который позволит убрать лист из списка скрытых листов (список вызывается из самого документа Excel при клике правой кнопкой мыши по названию листа):

Очень скрыт

Лист совсем скрыт

Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок расположенных ниже.

Хитрости »

Как сделать лист очень скрытым

1 Май 2011              90274 просмотров

Иногда возникают ситуации, когда надо скрыть лист со всем его содержимым от посторонних любопытных глаз. Очень часто это делается из контекстного меню листа (для счастливых обладателей 2007 Excel. Подробнее: здесь). Но при использовании данного метода необходимо защитить книгу, иначе отобразить скрытые листы сможет каждый (тем же правым щелчком мыши — Отобразить). А что делать, если книгу не надо защищать? Ведь часто необходимо оставить пользователям возможность работы со структурой книги, например, добавлять листы. Как тогда скрыть лист так, чтобы его нельзя было отобразить? Есть достаточно простой способ через редактор VBA, при этом обладать навыком программирования вообще не нужно. Итак, определились какой лист надо скрыть. Далее:

  1. заходим в редактор VBA(Alt+F11)
  2. жмем сочетание клавиш Ctrl+R или идем в меню ViewProject Explorer (чтобы отобразить окно объектов проекта VBA)
  3. жмем F4 или через ViewProperties Window (чтобы отобразить окно свойств)
  4. в левой части окна (в Project Explorer) ищем книгу, лист в которой надо скрыть и раскрываем её папку(на скрине это VBA Project (Книга1))
  5. раскрываем папку Microsoft Excel Objects и выделяем там лист с нужным именем
  6. в Окне свойств (Properties Window) находим свойство Visible и назначаем ему значение xlSheetVeryHidden

Сделать лист супер скрытым

Чтобы затем отобразить этот лист необходимо свойству Visible задать значение — xlSheetVisible. При этом для отображения листа необходимо будет обязательно зайти в редактор VBA — простым методом отобразить не получится. И книгу защищать не надо. Что нам и было необходимо.
Для большей надежности можно защитить проект VBA, чтобы не было возможности отобразить лист из VBA, не указав пароль. На функционал это не повлияет совершенно.
В том же окне VBA(Alt+F11):

  1. ToolsVBAProject Properties -вкладка Protection
  2. для защиты устанавливается галочка «Lock project for viewing«; для разблокировки — снимается
  3. вписывается/удаляется сам пароль в полях Password и Confirm password.

Скрыть только определенные листы активной книги можно следующим кодом:

Sub Hide_Sheets()
    Dim ws, aSheets
    aSheets = Array("Лист1", "Списки", "Лист2") 'через запятую перечисляем листы для скрытия(обязательно в кавычках)
    For Each ws In aSheets
        ActiveWorkbook.Sheets(ws).Visible = xlSheetVeryHidden
        'отобразить – xlSheetVisible; сделать лист просто скрытым -  xlSheetHidden
    Next wsSh
End Sub

Как использовать: Для начала надо убедиться, что разрешены макросы и при необходимости включить их: почему не работает макрос. Затем копируем код выше, из Excel переходим в редактор VBA(Alt+F11) —InsertModule. Вставляем туда скопированный код. Теперь код можно вызывать нажатием клавиш Alt+F8 -выделяем Hide_SheetsВыполнить(Run).
Скрыть все листы в активной книге, кроме листа с именем «Видимый», можно следующим кодом:

Sub Hide_All_Sheets()
    Dim wsSh As Object
    For Each wsSh In ActiveWorkbook.Sheets
        If wsSh.Name <> "Видимый" Then wsSh.Visible = xlSheetVeryHidden
        'отобразить – xlSheetVisible; сделать лист просто скрытым -  xlSheetHidden
    Next wsSh
End Sub

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

Также см.:
Как сделать лист скрытым?
Изменить видимость листов
Почему нет листов?


Статья помогла? Сделай твит, поделись ссылкой с друзьями!

rustim86

0 / 0 / 0

Регистрация: 01.09.2015

Сообщений: 50

1

Скрытие/отображение рабочих листов макросом

22.01.2016, 09:26. Показов 22452. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем здравствуйте! Подскажите, пожалуйста, есть ли возможность реализовать в VBA скрытие/отображение листов по признаку закрытый лист сделать открытым, и наоборот. Или код приведенный ниже сделать как-то компактнее что ли, дабы не писать команду для каждого отдельного листа с его названием. Заранее благодарю.

Visual Basic
1
2
3
4
5
6
ThisWorkbook.Sheets("Лист1").Visible = xlSheetVisible
ThisWorkbook.Sheets("Лист2").Visible = xlSheetVisible
ThisWorkbook.Sheets("Лист3").Visible = xlSheetVisible
ThisWorkbook.Sheets("Лист4").Visible = xlSheetVisible
ThisWorkbook.Sheets("Лист5").Visible = xlVeryHidden
ThisWorkbook.Sheets("Лист6").Visible = xlVeryHidden



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

22.01.2016, 09:50

2

Цитата
Сообщение от rustim86
Посмотреть сообщение

закрытый лист сделать открытым, и наоборот

Можно, но надо позаботиться о том, чтобы в любой момент хотя бы один лист был видимым.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub rustim86()
Dim i&, c As New Collection
  For i = 1 To ThisWorkbook.Sheets.Count
    If ThisWorkbook.Sheets(i).Visible = xlSheetVisible Then
      c.Add i
    Else
      ThisWorkbook.Sheets(i).Visible = xlSheetVisible
    End If
  Next
  If c.Count = ThisWorkbook.Sheets.Count Then
    MsgBox "в книге нет скрытых листов - невозможно скрыть все листы"
    Exit Sub
  End If
  For i = 1 To c.Count
    ThisWorkbook.Sheets(c(i)).Visible = xlSheetVeryHidden
  Next
End Sub



1



Shersh

Заблокирован

22.01.2016, 09:52

3

Visual Basic
1
2
3
for each sh in ThisWorkbook.Sheets
if sh.Visible=-1then sh.Visible=2else sh.Visible=-1
next

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



1



0 / 0 / 0

Регистрация: 01.09.2015

Сообщений: 50

22.01.2016, 09:58

 [ТС]

4

Казанский, благодарю!

Добавлено через 1 минуту
Shersh, да-да, я знаю, опытным путем уже узнал это И вам спасибо!



0



0 / 0 / 0

Регистрация: 17.03.2023

Сообщений: 9

24.03.2023, 09:46

5

Здравствуйте, уважаемые форумчане!
Я не программист, просто пытаюсь облегчить себе работу в excel и ищу готовые коды. В другой теме уже спрашивал, но может не в той теме задаю вопрос, поэтому нет ответа или пока некогда ответить.

Спрошу в этой теме. Как при помощи снятии галочек в ечейке с помощью кода скрывать листы с таким же именем как и в строке таблицы, ну и соответственно при установке галочки лист снова отображается. Подскажите код для файла, который приложил



0



АЕ

ᴁ®

Эксперт MS Access

3070 / 1736 / 361

Регистрация: 13.12.2016

Сообщений: 5,938

Записей в блоге: 4

24.03.2023, 10:05

6

Цитата
Сообщение от Алик73
Посмотреть сообщение

В другой теме уже спрашивал, но может не в той теме задаю вопрос, поэтому нет ответа или пока некогда ответить.

Может пора создать свою тему?

Добавлено через 5 минут

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E4:E100")) Is Nothing Then
        Target.Font.Name = "Marlett"
        If Target = "a" Then
            Target = ""
            ThisWorkbook.Sheets(Target.Offset(0, -1).Value).Visible = xlVeryHidden
        Else
            Target = "a"
            ThisWorkbook.Sheets(Target.Offset(0, -1).Value).Visible = xlSheetVisible
        End If
        Target.Offset(0, 1).Activate
    End If
End Sub

Добавлено через 4 минуты
однако надо или

Visual Basic
1
On Error Resume Next

вставить, либо Range(«E4:E8») ограничить…



1



0 / 0 / 0

Регистрация: 17.03.2023

Сообщений: 9

24.03.2023, 11:00

7

АЕ, спасибо!

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

Помогите еще, пожалуйста, что надо добавить в этот код, чтобы по снятию/установке галочки скрывались/показывались строки, с 1 по 5 например, на необходимом листе. Заранее благодарю!



0



ᴁ®

Эксперт MS Access

3070 / 1736 / 361

Регистрация: 13.12.2016

Сообщений: 5,938

Записей в блоге: 4

24.03.2023, 11:30

8

Цитата
Сообщение от Алик73
Посмотреть сообщение

Помогите еще, пожалуйста,

Поэтому и говорю. Создайте тему. Я же вижу, что ваша хотелка бесконечна и однообразна до безобразия.



0



0 / 0 / 0

Регистрация: 17.03.2023

Сообщений: 9

24.03.2023, 11:51

9

АЕ, пока вопрос не снят, поэтому и однообразен.
Хорошо, спасибо.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

24.03.2023, 11:51

Помогаю со студенческими работами здесь

Разделение списка расчетных листов на листы или файлы PDF макросом
Доброго дня, форумчане! Есть такой вопрос — есть файл Excel, выгруженный из 1С, со списком…

Сбор рабочих листов из внешних файлов с последующим выполнением другого макроса
Использую прекрасный макрос с форума,-спасибо. Макрос умеет открывать много файлов &quot;в один&quot; — одну…

Объекты Excel VBA: рабочие листы. Примеры структур рабочих листов в приложении, их связь и изменчивость
Ребята,помогите найти информацию…ума не приложу,что нужно искать…
7. Объекты Excel VBA:…

Скрытие и отображение столбцов
Возникла такая задачка:
Есть 3 вида стоблбцов, которые чередуются (1-й вид, 2-вид, 3-й вид, 1-й…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

Skip to content

Как скрыть все, кроме активного рабочего листа

На чтение 2 мин. Просмотров 2k.

Что делает макрос: Бывают ситуации, когда Вы не можете удалить все, кроме активного листа, как мы это делали в предыдущем макросе. Есть более мягкий вариант — просто скрыть листы. Excel не позволяет скрыть все листы в книге — по крайней мере, один должен быть виден. Тем не менее, вы можете скрыть все, кроме активного листа.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа и имя активного листа. Каждый раз, когда имя не совпадает, он скрывает лист.

Код макроса

Sub SkritVseKromeAktivnogoLista()
'Шаг 1: Объявляем переменную
Dim ws As Worksheet
'Шаг 2: Запускаем цикл по всем рабочим листам
For Each ws In ThisWorkbook.Worksheets
'Шаг 3: Сравниваем имя каждого листа с активным
If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
'Шаг 4: Скрываем лист, если не совпадают
ws.Visible = xlSheetHidden
End If
'Шаг 5: Переходим на следующий рабочий лист
Next ws
End Sub

Как работает этот код

  1. Объявляем переменную WS, которая будет хранить имя каждого листа.
  2. На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге.
  3. На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
  4. Если имена листов различны, макрокоманда скрывает лист.
  5. На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.

Вы заметили, что мы использовали xlSheetHidden в нашем макросе. Это свойство, которое получается, когда мы щелкает правой кнопкой мыши на листе и выбираем: Скрыть. В этом случае пользователь может щелкнуть правой кнопкой мыши на любой вкладке и выбрать: Отобразить. Он увидит все листы, которые скрыты. Но есть один вариант скрытия, который является более секретным. Если вы будете использовать xlSheetVeryHidden, чтобы скрыть свои листы, пользователи не смогут увидеть их, даже если они щелкнут правой кнопкой мыши на любой вкладке и выберут:Отобразить. Единственный способ, чтобы отобразить лист, скрытый таким способом, с помощью VBA.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

I have an Excel spreadsheet with three sheets. One of the sheets contains formulas for one of the other sheets.

Is there a programmatic way to hide the sheet which contains these formulas?

Teamothy's user avatar

Teamothy

1,9903 gold badges15 silver badges24 bronze badges

asked May 12, 2009 at 15:09

0

To hide from the UI, use Format > Sheet > Hide

To hide programatically, use the Visible property of the Worksheet object. If you do it programatically, you can set the sheet as «very hidden», which means it cannot be unhidden through the UI.

ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden 
' or xlSheetHidden or xlSheetVisible

You can also set the Visible property through the properties pane for the worksheet in the VBA IDE (ALT+F11).

answered May 12, 2009 at 15:16

Tmdean's user avatar

TmdeanTmdean

9,03843 silver badges51 bronze badges

2

You can do this programmatically using a VBA macro. You can make the sheet hidden or very hidden:

Sub HideSheet()

    Dim sheet As Worksheet

    Set sheet = ActiveSheet

    ' this hides the sheet but users will be able 
    ' to unhide it using the Excel UI
    sheet.Visible = xlSheetHidden

    ' this hides the sheet so that it can only be made visible using VBA
    sheet.Visible = xlSheetVeryHidden

End Sub

answered May 12, 2009 at 15:17

Dirk Vollmar's user avatar

Dirk VollmarDirk Vollmar

171k53 gold badges256 silver badges313 bronze badges

Just wanted to add a little more detail to the answers given. You can also use

sheet.Visible = False

to hide and

sheet.Visible = True

to unhide.

Source

trejder's user avatar

trejder

17k27 gold badges123 silver badges215 bronze badges

answered Apr 23, 2013 at 18:52

Charles Wood's user avatar

2

This can be done in a single line, as long as the worksheet is active:

ActiveSheet.Visible = xlSheetHidden

However, you may not want to do this, especially if you use any «select» operations or you use any more ActiveSheet operations.

answered May 20, 2009 at 15:20

Andrew Scagnelli's user avatar

Andrew ScagnelliAndrew Scagnelli

1,5844 gold badges18 silver badges26 bronze badges

I would like to answer your question, as there are various methods — here I’ll talk about the code that is widely used.

So, for hiding the sheet:

Sub try()
    Worksheets("Sheet1").Visible = xlSheetHidden
End Sub

There are other methods also if you want to learn all Methods Click here

answered Feb 15, 2020 at 10:16

Priya Sharma's user avatar

0

Содержание

  • Обычное скрытие листов в Эксель
    • Способ 1: Контекстное меню
    • Способ 2: «Формат»
    • Способ 3: Скрытие книги
  • Полное скрытие листов в Эксель (суперскрытые)
  • Вопросы и ответы

Как скрыть лист в Excel

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

Читайте также: Что делать, если пропали листы в Excel

Обычное скрытие листов в Эксель

Решить озвученную в заголовке статьи задачу можно одним из двух способов, дополнительно имеется возможность скрытия всей книги. Проблема в том, что как первый, так и второй имеют общий недостаток – точно таким же образом, как выполняется скрытие листа, можно его снова отобразить. То есть для защиты данных от посторонних такой метод не подходит. Для этих целей следует обратиться к изначально скрытым из приложения средствам разработчика, о чем мы расскажем во второй части статьи, или установить пароль на всю книгу — файл Microsoft Excel, о чем мы ранее писали в отдельной статье.

Подробнее: Как поставить пароль на книгу Эксель

Способ 1: Контекстное меню

Наиболее простой и удобный в своей реализации метод скрытия листа в книге Excel заключается в использовании контекстного меню. Кликните правой кнопкой мышки (ПКМ) на ярлыке, который требуется убрать из виду, и выберите пункт «Скрыть».

Скрыть лист через контекстное меню в программе Microsoft Excel

Совет: Если требуется скрыть более одного листа, выделите их с помощью клавиш – зажмите «SHIFT» и кликните левой кнопкой мышки (ЛКМ) по первому и последнему для указания нескольких смежных листов (диапазона) или зажмите «CTRL» и кликайте ЛКМ для указания несмежных элементов. Сделав это, вызовите контекстное меню и выберите соответствующий пункт.

Скрыть несколько листов в программе Microsoft Excel

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

Показать ранее скрытый лист в программе Microsoft Excel

Способ 2: «Формат»

Достичь аналогичного результата можно и несколько иначе, обратившись к элементам управления ячейками во вкладке «Главная». Для этого перейдите на тот лист, который требуется скрыть, разверните меню кнопки «Формат», наведите указатель курсора на пункт «Скрыть или отобразить» и выберите соответствующую опцию.

Скрытие листа через меню кнопки Формат в программе Microsoft Excel

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

Отображение ранее скрытого листа в программе Microsoft Excel

Lumpics.ru

Способ 3: Скрытие книги

Помимо одного или нескольких листов, в Excel можно скрыть сразу их все, то есть книгу целиком. Для этого перейдите во вкладку «Вид» и нажмите на кнопку «Скрыть», расположенную в группе инструментов «Окно».

Скрыть всю книгу в программе Microsoft Excel

Если содержимое книги снова потребуется сделать видимым, в этой же вкладке нажмите на ставшую активной кнопку «Отобразить».

Отобразить ранее скрытую книгу в программе Microsoft Excel

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

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

  1. Откройте меню «Файл» и перейдите к разделу «Параметры».
  2. Открыть раздел Параметры в программе Microsoft Excel

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

    Читайте также: Включение макросов в Эксель

  4. Перейдите в появившуюся на ленте вкладку «Разработчик» и нажмите в ней на первую кнопку – «Visual Basic».
  5. Запуск редактора Visual Basic в программе Microsoft Excel

  6. В открывшемся редакторе Microsoft Visual Basic, в его левой части, будет находиться два дополнительных окна. В первом найдите и выделите наименование листа, который требуется сделать полностью невидимым, – он может быть как уже скрытым, так и еще нет. В таблице, которая расположена во втором окне, измените параметр «Visible» на «2 — xlSheetVeryHidden», выбрав его из выпадающего списка.
  7. Полное скрытие листа в редакторе макросов в программе Microsoft Excel

  8. Закройте окно Visual Basic. С этого момента скрытый таким образом лист станет суперскрытым – его нельзя будет показать через контекстное меню или кнопку «Формат», а узнать о его существовании можно будет только в редакторе.
  9. Отсутствие возможности отображения скрытого листа в программе Microsoft Excel

    Если потребуется снова сделать лист скрытым, но доступным для отображения, или полностью видимым, повторно откройте окно Microsoft Visual Basic и измените в нем параметр «Visible» на «0 — xlSheetHidden» или «1 — xlSheetVisible» соответственно.

    Отображение суперскрытого листа в программе Microsoft Excel

    Читайте также: Снятие защиты с файла Майкрософт Эксель

Мы рассмотрели то, как скрыть один или несколько листов в Microsoft Excel, а также то, как сделать их суперскрытыми, действительно спрятав от посторонних.

Понравилась статья? Поделить с друзьями:
  • Макрос excel для продвинутых
  • Макрос excel выпадающий список в одной строке
  • Макрос excel для поиска текста
  • Макрос excel выделить значения
  • Макрос excel для печати в pdf