9

我正在寻找一种可靠的方法来在 OnLoad() 事件期间最小化默认的 MSAccess 工具栏功能区。

我意识到可以完全隐藏工具栏,但这并不是我想要做的——我只想最小化功能区:

DoCmd.ShowToolbar "Ribbon", acToolbarNo    'Hides the full toolbar
DoCmd.ShowToolbar "Ribbon", acToolbarYes   'Show

我尝试了几种方法,但都取得了好坏参半:

在 Access 2010 和 2013 (VB7) 中:

CommandBars.ExecuteMso "MinimizeRibbon"

早期版本:

SendKeys "^{F1}", False

这两种方法似乎都在会话之间作为切换操作。有没有一种方法可以确定当前状态,然后应用适当的代码?

我有访问权限的用户:2007、2010、2013

感谢您的任何建议!

标记

4

5 回答 5

13

访问 2010 版及更高版本,您应该在启动表单中执行此操作。如果您只使用 ExecuteMso 行,它会在每次打开该表单时切换您的功能区。为了始终在启动时最小化功能区,我使用以下代码。

If CommandBars("ribbon").Height > 100 Then
    CommandBars.ExecuteMso "MinimizeRibbon"
End If

希望这可以帮助一些像我一样正在寻找答案的人

戴夫

于 2014-09-26T22:41:52.913 回答
7

这是我的实现的一个片段:

Select Case SysCmd(acSysCmdAccessVer)
    Case 7: accVer = "95"
    Case 8: accVer = "97"
    Case 9: accVer = "2000"
    Case 10: accVer = "2002"
    Case 11: accVer = "2003"
    Case 12: accVer = "2007"
    Case 13: accVer = "Pirated!"
    Case 14: accVer = "2010"
    Case 15: accVer = "2013"
    Case Else: accVer = "Unknown"
End Select

RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)

Select Case RibbonState
    Case True
        'Do nothing, already minimized
    Case False
        If accVer > 13 Then
            CommandBars.ExecuteMso "MinimizeRibbon"
        Else
            SendKeys "^{F1}", False
        End If
End Select
于 2013-08-14T20:04:21.003 回答
5

在 MSDN 上查看此答案。他分享了几种不同的方法,包括示例数据库。

EG 在 Access 2010 中,您可以使用以下命令更改功能区状态:

CommandBars.ExecuteMso "MinimizeRibbon"

http://social.msdn.microsoft.com/Forums/office/en-US/2f0d95a8-ed5f-4007-831d-05ef7e7a4263/minimize-the-ribbon-at-access-startup-using-vba

他在内部链接:

http://www.accessribbon.de/en/index.php?FAQ:19

http://www.accessribbon.de/en/index.php?Downloads:15

根据使用的访问权限,您也许可以使用不同的功能。

取自 - http://windowssecrets.com/forums/showthread.php/142262-How-to-find-Access-version-in-code

Public Function AccessVersionID() As String


   Select Case SysCmd(acSysCmdAccessVer)
     Case 7: AccessVersionID = "95"
     Case 8: AccessVersionID = "97"
     Case 9: AccessVersionID = "2000"
     Case 10: AccessVersionID = "2002"
     Case 11: AccessVersionID = "2003"
     Case 12: AccessVersionID = "2007"
     Case 13: AccessVersionID = "Pirated!"
     Case 14: AccessVersionID = "2010"
     Case 15: AccessVersionID = "2013"
     Case Else: AccessVersionID = "Unknown"
   End Select

 End Function            'AccessVersionID()
于 2013-08-14T19:16:09.690 回答
1

刚刚移至 Access 2016。我的数据库使用与 Dave Stuart 提供的代码类似的代码。看起来最小化的功能区现在的高度为“102”,所以使用过(例如):

If CommandBars("ribbon").Height > 120 Then
  CommandBars.ExecuteMso "MinimizeRibbon"
End If
于 2016-09-16T03:54:47.547 回答
0
Sub ToggleRibbon(Optional Show)

    If IsMissing(Show) Then
        CommandBars.ExecuteMso "MinimizeRibbon"   'Toggle

    ElseIf Show = True Then
        If CommandBars("ribbon").Height < 100 Then
            CommandBars.ExecuteMso "MinimizeRibbon"
        End If

    ElseIf Show = False Then
        If CommandBars("ribbon").Height > 100 Then
            CommandBars.ExecuteMso "MinimizeRibbon"
        End If

    End If

End Sub
于 2020-06-01T00:26:02.697 回答