如何自动隐藏功能区,但仅隐藏特定工作簿以及该工作簿中仅一个工作表的功能

时间:2019-04-12 06:58:13

标签: excel vba

如何在工作簿打开时自动隐藏功能区,但仅对特定工作簿以及该工作簿中的一个工作表自动隐藏?

当我使用以下代码时,按预期方式工作并隐藏功能区,但是当我打开另一个Excel文件时,文件中的功能区也被隐藏。

Private Sub Workbook_Open()
    Application.CommandBars.ExecuteMso "HideRibbon"
 End Sub

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

以独特的方式命名工作表,例如“ aaa”,然后在ThisWorkbook模块内部编写以下内容:

Private Sub Workbook_Activate()
    If ActiveSheet.Name = "aaa" Then
        'Application.CommandBars.ExecuteMso "HideRibbon"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'code to hide ribbon.
    Else
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
    End If
End Sub

Private Sub Workbook_Deactivate()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "aaa" Then
        'Application.CommandBars.ExecuteMso "HideRibbon"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'code to hide ribbon.
    Else
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
    End If
End Sub

已在Excel 2007和Excel 2010中进行了测试,并且工作正常。

顺便说一句,在Excel 2007和Excel 2010中测试过Application.CommandBars.ExecuteMso "HideRibbon"会引发错误,请问您使用哪个版本?

如果愿意,请根据注释将上面的“隐藏/显示行”替换为在您的版本中有效的行。