Rambler's Top100
Российский фонд помощи
Навигация
Главная
MS ACCESS
VB
ASP
PHP
Наши друзья
Поиск
Форум
Лента новостей
Новый сайт

Online
Рассылки Subscribe.Ru
Работа с MS Access
Подписаться письмом
Реклама на сайте
 
Главная arrow MS ACCESS arrow Программное скрытие/восстановление и сворачивание/разворачивание ленты Ribbon (Access 2010 и выше)
Программное скрытие/восстановление и сворачивание/разворачивание ленты Ribbon (Access 2010 и выше) Печать E-mail
Автор Joss   
01.11.2019 г.

Начиная с версии 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.

 

Если Вы не хотите использовать условную компиляцию, то можете воспользоваться предложением пользователя Akina с сайта SQL.RU

 

Переместите код минимизации в процедуру. Вместо условной компиляции примените обращение к этой процедуре по условию.

Function DbRibbonMinimize() As Boolean

If Val(SysCmd(acSysCmdAccessVer)) > 12 Then Call PerformMinimize

End Function

 

Private Function PerformMinimize()

If Not RibbonState() Then

    Application.Echo False

    CommandBars.ExecuteMso "MinimizeRibbon"

    Application.Echo True

End If

End Function

Компиляция процедуры, конечно, выполняется, но вот проверка существования метода CommandBars.ExecuteMso выполняется только в момент обращения к процедуре. Соответственно если версия Access не знает про этот метод, то условие в DbRibbonMinimize не вызывает процедуру, и ошибки не будет.

 

Использованы материалы с сайта 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

http://www.sql.ru/forum/1262455/kompilyaciya-koda-v-zavisimosti-ot-versii-access


Просмотров: 1578

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code

 
Реклама на сайте
HiProg.com - Технологии программирования
Rambler's Top100 TopList