【问题标题】:Delete user ribbon from file从文件中删除用户功能区
【发布时间】:2020-06-04 05:42:47
【问题描述】:

我有带有用户功能区的 .xlsb 文件(我是在“Microsoft Office 的自定义 UI 编辑器”中制作的)。

我想从文件中自动删除(或隐藏)此功能区(使用 VBA)。 有可能吗?

【问题讨论】:

  • 你试过录制手动删除过程的宏吗?
  • 如何手动删除?当使用自定义 UI 编辑器编辑 xlsb 文件的 XML 结构时,我可以将其删除。我不知道如何用 excel-tools 删除它。
  • 如果右键单击功能区单击自定义,功能区是否显示在选项卡菜单中?
  • 没有。如果我选择“所有标签”,也没有我的功能区
  • 这能回答你的问题吗? Excel Hide/Show all tabs on Ribbon except custom tab。或者简而言之:VBA 无法实现您想要做的事情。

标签: excel vba


【解决方案1】:

对于这个演示,您需要 CustomUI EditorExcel显然

创建一个新工作簿并将其保存为 AlexExample.xlsm

[A] 打开 VBE,插入一个模块。将此代码粘贴到模块中

Option Explicit

Dim Ribn As IRibbonUI
Public RibnTag As String

Sub RibbonOnLoad(ribbon As IRibbonUI)   
    Set Ribn = ribbon
End Sub

Sub GetVisible(control As IRibbonControl, ByRef visible)
    Select Case RibnTag
    Case "ShowTab": visible = True
    Case "HideTab": visible = False
    End Select
End Sub

Sub ShowMyRibbonTab()
    RibnTag = "ShowTab"
    If Not Ribn Is Nothing Then
        Ribn.Invalidate
    Else
        MsgBox "Couldn't get the ribbon object. Please close and restart the workbook"
    End If
End Sub

Sub HideMyRibbonTab()
    RibnTag = "HideTab"
    If Not Ribn Is Nothing Then
        Ribn.Invalidate
    Else
        MsgBox "Couldn't get the ribbon object. Please close and restart the workbook"
    End If
End Sub

[B]打开 ThisWorkbook 代码区并粘贴此代码

Option Explicit

Private Sub Workbook_Open()
    RibnTag = "ShowTab"
End Sub

[C] 转到工作表并创建 2 个按钮(表单控件)。 SHOWHIDE 如下图所示。右键单击按钮并将宏 ShowMyRibbonTab 分配给 SHOW 并将 HideMyRibbonTab 分配给 HIDE

[D] 接下来打开 CustomUI 编辑器并从那里打开 Excel 文件。插入customUI.xml 并将下面的代码粘贴到那里。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad" 
xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
    <tabs>
      <tab id="MyCustomTab" label="AlexsTab" getVisible="GetVisible" tag="AlexsTab" >
    </tab>
</tabs>
</ribbon>
</customUI>

保存并关闭文件,您就完成了。

示例文件https://www.dropbox.com/s/izzbwpcmqtyoibd/AlexExample.xlsm?dl=0

【讨论】:

  • 感谢您的评论,效果很好。但这并不能解决我的问题。我的功能区和宏有 .xlsb 文件。然后我想从宏中清除它并隐藏功能区(我需要在没有我的信息的情况下共享这个文件)。从宏中清除它的最简单方法是隐藏功能区并将其保存为 .xlsx 格式,但是当我重新打开此 xlsx 文件时,我收到错误警报(无法运行宏“RibbonOnLoad”,因为宏已被清除)。有什么建议吗?
  • 您 6 个月前的问题有所不同。我相应地回答了。对于您的新要求,您需要提出一个新问题。请不要编辑问题以在 6 个月后完全改变要求:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 2018-11-13
  • 2013-08-09
相关资源
最近更新 更多