VBA删除自定义加载项选项卡

VBA删除自定义加载项选项卡,vba,ribbon,office-addins,Vba,Ribbon,Office Addins,我从Stack Overflow中找到了代码,该代码允许我通过将xlam文件作为加载项上载来添加自定义选项卡,请参见下面的代码。不幸的是,当我从“开发人员”选项卡取消选择外接程序时,“停用”部分没有从功能区中删除“自定义”选项卡 我看到过一些示例,其中可以通过GetVisible隐藏选项卡,但我不知道如何将其与下面的代码结合起来。我还没有发现任何更简单的操作,可以在从“开发人员”选项卡中取消选择外接程序时标识和删除该选项卡 Private Sub Workbook_Open() Dim

我从Stack Overflow中找到了代码,该代码允许我通过将xlam文件作为加载项上载来添加自定义选项卡,请参见下面的代码。不幸的是,当我从“开发人员”选项卡取消选择外接程序时,“停用”部分没有从功能区中删除“自定义”选项卡

我看到过一些示例,其中可以通过GetVisible隐藏选项卡,但我不知道如何将其与下面的代码结合起来。我还没有发现任何更简单的操作,可以在从“开发人员”选项卡中取消选择外接程序时标识和删除该选项卡

Private Sub Workbook_Open()

    Dim hFile As Long
    Dim path As String, fileName As String, ribbonXML As String, user As String

    hFile = FreeFile
    user = Environ("Username")
    path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
    fileName = "Excel.officeUI"

    ribbonXML = "<mso:customUI       xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
    ribbonXML = ribbonXML + "  <mso:ribbon>" & vbNewLine
    ribbonXML = ribbonXML + "    <mso:qat/>" & vbNewLine
    ribbonXML = ribbonXML + "    <mso:tabs>" & vbNewLine
    ribbonXML = ribbonXML + "      <mso:tab id='reportTab' label='Misc' insertBeforeQ='mso:TabFormat'>" & vbNewLine
    ribbonXML = ribbonXML + "        <mso:group id='reportGroup' label='Source Sheet' autoScale='true'>" & vbNewLine
    ribbonXML = ribbonXML + "          <mso:button id='runReport' label='Create Sheet' " & vbNewLine
    ribbonXML = ribbonXML + "imageMso='AppointmentColor3'      onAction='CreateSheet'/>" & vbNewLine
    ribbonXML = ribbonXML + "        </mso:group>" & vbNewLine
    ribbonXML = ribbonXML + "        <mso:group id='Group2' label='Formatting' autoScale='true'>" & vbNewLine
    ribbonXML = ribbonXML + "          <mso:button id='FormatButtons' label='Format Selection' " & vbNewLine
    ribbonXML = ribbonXML + "imageMso='AppointmentColor3'      onAction='Test2'/>" & vbNewLine
    ribbonXML = ribbonXML + "        </mso:group>" & vbNewLine
    ribbonXML = ribbonXML + "      </mso:tab>" & vbNewLine
    ribbonXML = ribbonXML + "    </mso:tabs>" & vbNewLine
    ribbonXML = ribbonXML + "  </mso:ribbon>" & vbNewLine
    ribbonXML = ribbonXML + "</mso:customUI>"

    ribbonXML = Replace(ribbonXML, """", "")

    Open path & fileName For Output Access Write As hFile
    Print #hFile, ribbonXML
    Close hFile

End Sub

但我不知道如何将它与下面的代码结合起来——使用回调过程,就像OnAction一样。谢谢Mathieu的回复。你能用代码告诉我怎么做吗?理想情况下,我希望在从“开发人员”选项卡取消选择自定义选项卡时将其从功能区中删除。非常感谢!
Private Sub Workbook_Deactivate()

    Dim hFile As Long
    Dim path As String, fileName As String, ribbonXML As String, user As String

    hFile = FreeFile
    user = Environ("Username")
    path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
    fileName = "Excel.officeUI"

    ribbonXML = "<mso:customUI           xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" & _
    "<mso:ribbon></mso:ribbon></mso:customUI>"

    Open path & fileName For Output Access Write As hFile
    Print #hFile, ribbonXML
    Close hFile

End Sub