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