Суперскрытый лист
Иногда некоторые листы в книге приходится скрывать от глаз пользователей. Классический способ предполагает скрытие листа через меню Формат - Лист - Скрыть или правой кнопкой по ярлычку листа - Скрыть (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 он отображаться не будет. Меньше знаешь - крепче спишь. :)
текст макроса
Sheets("list").Visible = 2
т.е. мы сначала показываем лист, потом его прячем.....
Возможно не нашел..
Иногда макрос скрывает листы.... потом чтобы отобразить нужно делать много лишних телодвижений (формат-лист-отобразить) и так раз 20 подряд....
можно это как то упростить?.
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 SubSub 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Открыть редактор Visual Basic (Alt+F11), выделить суперскрытый лист в панели Project Explorer (там всегда видны все листы) и потом в панели Properties поменять ему свойство Visible обратно на xlSheetVisible.
Можно ли сделать суперскрытыми часть листов, без перечисления всех нужных и присвоения атрибута каждому по отдельности?
Например, только те, которые имеют диапазон (Name) от Sheet22 до Sheet33?
Спасибо!
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 уровень? а то есть умельцы, которые их открывают, а это делать крайне нежелательно, спасибо!
= Excel.CurrentWorkbook()
Для меня VBA - темный лес, но через PQ, обойти можно даже с помощью интерфейса редактора.
Редактор vb неактивен ( открыт ваш пример, так же на своем) - visual basic неактивен.
И во вкладке разработчик нет возможности зайти в vba, при нажатии горячих клавишей запуска макроса- с Alt+F11 ничего не происходит