Описание: Из названия всё ясно. Для начинающих.
Автор: Дмитрий Сонных (AKA Joss)
Добавил на сайт: Joss 16.06.2017
Начиная с версии 2007 в Офисе вместо старого меню появилась так называемая "Лента" (Ribbon). Следовательно появились и новые команды для управления этими "Лентами".
Программно скрыть/восстановить ленту.
Бывает необходимо, чтобы запретить пользователям "лишние" действия.
Скрывается Ribbon командой DoCmd.ShowToolbar "Ribbon", acToolbarNo
а восстанавливается DoCmd.ShowToolbar "Ribbon", acToolbarYes
Команды можно оформить подпрограммами или функциями.
Sub HideRibbon()
DoCmd.ShowToolbar "Ribbon", acToolbarNo
End Sub
Sub ShowRibbon()
DoCmd.ShowToolbar "Ribbon", acToolbarYes
End Sub
Эти команды работают так же в Access (и Офисе) 2007.
Свернуть/развернуть ленту.
Делается
для того, чтобы освободить больше места под полезную информацию. В
отличии от первого случая, пользователь всегда может свернуть/развернуть
ленту, нажав на стрелочку, находящуюся рядом со знаком вопроса в правой
части строки меню.
Команда для смены состояния ленты всего одна CommandBars.ExecuteMso "MinimizeRibbon"
и работает она как триггер, поочерёдно разворачивая и сворачивая ленту.
Так, что если Вам надо свернуть ленту, то сначала надо проверить её
состояние. Проверить состояние ленты можно запрашивая её размер. Вот так
If CommandBars("Ribbon").Height > 100 Then
CommandBars.ExecuteMso "MinimizeRibbon"
DoEvents
End If
Эта команда работает только в Access начиная с версии 2010. В 2007 аксе выдает ошибку Runtime eroor #5. По-этому я и включил упоминания об этой версии в заголовок статьи.
Свернуть/развернуть ленту можно нажав на клавиатуре комбинацию клавиш Ctrl + F1 или программно эмулировав нажатие командой SendKeys ("^{F1}") ' Ctrl + F1
Но при этом может меняться состояние NumLock, что не хорошо.
Примечание.
Команда CommandBars.ExecuteMso
работает только начиная с версии 2010. Но многие до сих пор пользуются
версией 2003, где эта команда не обрабатывается и выдаётся сообщение об
ошибке. Обойти это можно использовав операторы условной компиляции. В
версии 2010 и выше используется VBA7. Так что я доработал код следующим
образом Function DbRibbonMinimize()
#If vba7 Then
If Not RibbonState() Then
Application.Echo False
CommandBars.ExecuteMso "MinimizeRibbon"
Application.Echo True
End If
#End If
End Function
Function RibbonState() As Boolean
'Result: 0=normal, -1=autohide
RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
End Function
Такая программа прекрасно компилируется как в Access 2003, так и в Access 2010.
Использованы материалы с сайта SQL.RU
http://www.sql.ru/forum/1249824/kak-programmno-svernut-razvernut-lentu-access-2007-i-vyshe
http://www.sql.ru/forum/862643/programmno-skryt-lentu-menu-ribbon
а так же
http://www.accessribbon.de/en/index.php?FAQ:19 [Back]