Как скрыть панели инструментов Excel 2003 и ленту Excel 2007 при помощи макроса на VBA

"Чиcтый" интерфейс Excel

Чтобы убрать с экрана все лишние элементы интерфейса Excel, можно выспользоваться таким кодом:

(скрываются все панели инструментов в Excel 2003 и лента в Excel 2007; скрываются ярлычки листов, линейки и полосы прокрутки; изменяется название окна приложения)

При необходимости можно отображать нужную панели инструментов, в то время, как остальные панели будут скрыты)

Private Sub ChangeInterface(Value As Boolean)
    With Application
        .ScreenUpdating = False
        .Caption = IIf(Value = True, Empty, "Наше окно")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        Dim iCommandBar As CommandBar
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value
            .DisplayWorkbookTabs = Value
        End With
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", " & Value & ")"
        .ScreenUpdating = True
    End With
End Sub
 
Private Sub УбратьВсё()
    ChangeInterface False
End Sub
 
Private Sub ВосстановитьИнтерфейс()
    ChangeInterface True
End Sub

Чтобы скрывать панели инструментов Excel 2003 и ленту Excel 2007 только для одной книги,
поместите в модуль ЭтаКнига следующий код:
(при переключении на другой файл интерфейс Excel будет восстанавливаться)

Private Sub Workbook_Open() ' открытие книги
    УбратьВсё
End Sub
Private Sub Workbook_Activate() ' возврат на эту книгу из другой
    УбратьВсё
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) ' закрытие книги
    ВосстановитьИнтерфейс
End Sub
Private Sub Workbook_Deactivate() ' переключение на другую книгу
    ВосстановитьИнтерфейс
End Sub

См. пример в прикреплённом файле:

Вложения:

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Все, разобралась!

Добрый день! А можно сделать так, чтобы вместо надписи "наше окно" отображалось имя файла? Заранее, Спасибо!

Доброго времени суток! Огромное спасибо за Ваш пример, с удовольствием им пользуюсь и все работает!
Но есть один вопрос, при переходе на другую книгу Excel все восстанавливается, однако бывает момент когда панель инструментов видна но не "Зафиксирована".
Подскажите, пожалуйста, можно ли добавить в приведенный выше код алгоритм проверки: если в новой книге панель зафиксирована, то ничего не делаем, если нет, то собственно фиксируем?

Ирина, судя по описанию задачи, с вероятностью 99% вы это делаете в целях мошенничества ("угадаю результат игры заранее")
А мошенникам я не помогаю, так что ваш вопрос останется без ответа.

Добрый день! Мой макрос открывает определенные листы при наборе разных паролей. При закрытии файла срабатывает Private Sub Workbook_BeforeClose(Cancel As Boolean)- скрывает все листы, кроме Стартового, защищает лист и файл паролем. Мне нужно, чтобы при закрытии он убирал и Панель Экселя...и только при открытии Паролем администратора файла (в теле основного макроса) - была видна Панель. В Private Sub добавила строку - Application.DisplayFullScreen = False. В основном модуле - Application.DisplayFullScreen = True...не работает((
Как это можно сделать? Заранее большое спасибо! Ирина

Спасибо за ответ, макрос скрытия всех элементов (написанный Вами) срабатывает , далее запускается макрос макрос формирования панели инструментов( так же Ваш) , но в конечном итоге Вкладка Надстройка не видна на ленте, т.е. Условие "При необходимости можно отображать нужную панели инструментов, в то время, как остальные панели будут скрыты" НЕ выполняется.
В ексель я соединил два макроса Скрытие панели инструментов и формирование новой панели.Есть подозрение , что В Ексель 2010 эта процедура не работает.

Не получается что? Макрос запустить? или что-то другое?
я не телепат...
на форумах спросите, прикрепив свой файл с макросами, - тогда быстро помогут
(без файла - непонятно, что ы вас там за макросы, и как вы их запускаете)

Добрый день.Вы пишите"Тут ничего сложного нет - сначала запускаете макрос скрытия интерфейса, а следом за ним - макрос формирования панели инструментов" У меня такой вопрос-работает ли для Эксель 2010?
Я что только не пробовал, не получается. А все форумы дают ссылку на вашу статью.
За ранее спасибо.

Joann, с этим помочь не смогу (не знаю). Возможно, что никак не проверить (только через WinAPI если, - но там весьма сложный код)
Обратитесь на форумы по Excel, — может, там кто подскажет.

Каким условием проверить: Свернута-ли (не скрыта а свернута до пунктов меню) в настоящий момент лента?

Запустил окно - всё скрылось как вы и описывали, нажал на крестик что бы закрыть окно а на всплывшем подтверждении действия отмену - всё появилось вновь. Как исправить?)

Спасибо, у меня (отдельно Ваш код) тоже работает. Открываю книгу и на форме жму сразу "Выход" (без создания новой книги): закрывается. Открываю другую книгу - весь интерфейс на месте. Но стоит скопировать пару (Array) листов (только значения) и вставить в новую по FileSaveAs (новая активна в этот момент), закрыть старую без сохранения (срабатывает _BeforeClose, где и сидит RestoreInterface), то остаётся новая книга без формула и статус бара... Добавлял отдельно эти строки в конце процедуры уже после закрытия старой книги- не работает.

Только что проверил макрос в Excel 2003 и Excel 2010
Описанная вами проблема у меня не проявляется.

За видимость указанных панелей отвечает эта строка кода:

.DisplayStatusBar = Value: .DisplayFormulaBar = Value

Проверьте, - может, вы изменили или удалили эту строку?

Пользуюсь кодом без .ExecuteExcel4Macro (для 2003). Есть непонятка: если в книге со спрятанным интерфейсом (а заодно и само окно программы), но видимой формой создать новую книгу и закрыть первую книгу с возвратом всего спрятанного, то остаётся видимой новая книга, но без StatusBar и FormulaBar. Приходиться ручками ставить видимость обратно. Почему так? Решение? (новая книга без макросов). Спасибо.

Это всё настраивается в том же XML, где вы прописали своё меню (задаётся видимость остальных вкладок) - никаких макросов тут не надо.

Или хотя бы чтоб оно по умолчанию грузилось.

спасибо! я и так свое меню сделал, только надо, чтобы только оно грузилось и все

Данный код может только скрыть \ отобразить ленту целиком.
Вообще, этот макрос разрабатывался для Excel 2003, просто в него была добавлена опция для Excel 2007.

Вкладки на ленте добавляются \ скрываются \ отображаются при помощи XML
Поищите в яндексе Ribbon editor
Т.е. вы в свой файл XLSM (XLSB) встраиваете этот XML - и при открытии файла автоматически отобразятся или скроются нужные вкладки.

PS: Сейчас уже можно не оставлять совместимость с Excel 2003 - времена его широкого распространения прошли.
Так что делайте своё меню (ленту) для Excel 2007\2010\2013, а не панели инструментов (которые работают и в старых версиях Excel).

а можно ли при загрузке книги оставить нужную закладку в ленте (например созданную самим "закладка1")?

Да, спасибо, панели восстановились, правда для этого пришлось макрос переносить в новый файл. Из старого это не получалось.
Спасибо за сайт. Он очень полезен нам, не самым большим специалистам в VBA.
Возник еще один вопрос. Если из файла в котором скрыты панели и окно переименовано, например, в "Наше окно", должен запускаться еще один файл, то возврат к основному файлу в макросе вызывает ошибку. Может в обращении к новому файлу следует изменить его имя на новое "Наше окно"?

Protsiv, панели не пропали, - они просто скрыты.
Впрочем, это неудивительно, - если вы запустили макрос для скрытия этих панелей.

Чтобы отобразить все панели инструментов, откройте прикреплённый к статье файл, и запустите макрос «ВосстановитьИнтерфейс»

У меня после выполнения этих макросов пропали все панели инструментов и все панели управления в Эксель-2003. Весит только строка формул.
Как вернуть все в стандартное состояние?

Тут ничего сложного нет - сначала запускаете макрос скрытия интерфейса, а следом за ним - макрос формирования панели инструментов

Private Sub Workbook_Open() ' открытие книги
УбратьВсё
ФормированиеПанелиИнструментов
End Sub
ВОТ ЭТА ЗАМЕЧАТЕЛЬНАЯ МЫСЛЬ! НО НЕ ПОЛУЧАЕТСЯ ОСТАВИТЬ ТОКА МЕНЮ НАДСТРОЕК, ПОЧЕМУ?

Поддерживаю. Аналогичная проблема. Я на свою панельку добавил кнопку сохранить, нажимаю ее и закрываю файл но все равно выскакивает окошка с предложением сохранить при этом уже отображаются заголовки строк и столбцов, листы, и пателька (файл, правка, вид...). Подскажите как убрать запрос на сохранение а чтобы сохраняло автоматически без запроса?

У меня та же проблема в верхней части экрана синяя строка то появляется то нет.
Прекрасный сайт! Спасибо админу!

Есть глюк. Закрываем файл, в ответ на запрос о сохранении жмем "отмена" и разворачиваем ленту. Как избавиться? И как оставить кнопку печать? В VBA чайник, прошу объяснить подробно.

В 2003 все понятно со скрытием меню и программированием своего
А вот в 2007 и 2010 удается скрыть ленту, а дальше что-то я торможу как создать свое меню.

Вопрос еще такой: как запретить пользователю залезать в "параметры" в 2007 и 2010? и можноли отключить эту круглую кнопку в 2007 и "файл" в 2010?

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

иа моем компе 2 версии офиса 2003 и 2010 (приходится иногда пользоваться и одной и другой)
активная всегда одна из них и это создает проблемы

есть такой код на vb6

Public Sub Main()
'On Error Resume Next
'Проверяем версию Excel
Set xlApp = New Excel.Application
xlApp.Visible = True
If Val(xlApp.Version) <> 14 Then
MsgBox "Необходим Excel-2010"
xlApp.Quit
Set xlApp = Nothing
Exit Sub
End If

если активен excel 2010 то продолжаем, а если нет, то выходим.
Проблема: если активен 2003, то для работы программы приходится переустанавливать десятку - это весьма нудно. гдето в реестре чтото есть для быстрого переключения, или чтото еще, но где?
Кроме Вас на форуме чтото все залипли
спасибо

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

Тут ничего сложного нет - сначала запускаете макрос скрытия интерфейса, а следом за ним - макрос формирования панели инструментов

Private Sub Workbook_Open() ' открытие книги
    УбратьВсё
    ФормированиеПанелиИнструментов
End Sub

"При необходимости можно отображать нужную панели инструментов, в то время, как остальные панели будут скрыты)"

Может быть как это сделать всем очевидно, но я в затруднении.. нужно решение по котором оставалась бы только создаваемая пользовательская панель.. А как??

Сайт очень полезный и информативный!

Отличный макрос! Разработчику респект! Есть только один недостаток. При переходе с одного листа открытой книги на другой, а потом возврат на предыдущий - в верхней части экрана под заголовком окна появляется странная полоса. После выполнения последовательно макросов ВосстановитьИнтерфейс, УбратьВсё полоса пропадает, а потом снова появляется. Кроме того в Таблице настройки панелей инструментов появляется странное пустое окно выбора панели (без наименования, удалить которое невозможно. Можете что-либо прояснить по данному багу.

С уважением
Вадим

а можно проще, если надо только скрыть панели

Можно и так, конечно, но результат будет не совсем тот.

Во-первых, остаются видимыми заголовки строк и столбцов, полосы прокрутки, ярлычки листов, а в Excel 2003, помимо этого, еще и панели инструментов.

Так что упрощённый способ не даст такого результата, которого можно добиться при использовании функции ChangeInterface

а можно проще, если надо только скрить панели:
Private Sub Workbook_Open()   
  Application.DisplayFullScreen = True
End Sub

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   __   ____        _   ____    ____    ___ 
/ _| | _ \ | | |___ \ | _ \ |_ _|
| |_ | |_) | _ | | __) | | | | | | |
| _| | __/ | |_| | / __/ | |_| | | |
|_| |_| \___/ |_____| |____/ |___|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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