Чтобы убрать с экрана все лишние элементы интерфейса 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
Описанная вами проблема у меня не проявляется.
За видимость указанных панелей отвечает эта строка кода:
Проверьте, - может, вы изменили или удалили эту строку?
Пользуюсь кодом без .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, то для работы программы приходится переустанавливать десятку - это весьма нудно. гдето в реестре чтото есть для быстрого переключения, или чтото еще, но где?
Кроме Вас на форуме чтото все залипли
спасибо
Подскажите пожалуйста как скрыть не всю ленту, а только некоторые, конкретные вкладки, или как вариант, скрыть всю, а потом отобразить нужные.
Спасибо.
Тут ничего сложного нет - сначала запускаете макрос скрытия интерфейса, а следом за ним - макрос формирования панели инструментов
"При необходимости можно отображать нужную панели инструментов, в то время, как остальные панели будут скрыты)"
Может быть как это сделать всем очевидно, но я в затруднении.. нужно решение по котором оставалась бы только создаваемая пользовательская панель.. А как??
Сайт очень полезный и информативный!
Отличный макрос! Разработчику респект! Есть только один недостаток. При переходе с одного листа открытой книги на другой, а потом возврат на предыдущий - в верхней части экрана под заголовком окна появляется странная полоса. После выполнения последовательно макросов ВосстановитьИнтерфейс, УбратьВсё полоса пропадает, а потом снова появляется. Кроме того в Таблице настройки панелей инструментов появляется странное пустое окно выбора панели (без наименования, удалить которое невозможно. Можете что-либо прояснить по данному багу.
С уважением
Вадим
Можно и так, конечно, но результат будет не совсем тот.
Во-первых, остаются видимыми заголовки строк и столбцов, полосы прокрутки, ярлычки листов, а в Excel 2003, помимо этого, еще и панели инструментов.
Так что упрощённый способ не даст такого результата, которого можно добиться при использовании функции ChangeInterface
а можно проще, если надо только скрить панели:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub
Отправить комментарий