通过VBA代码添加的功能区需要时间才能显示在Excel中...看起来像刷新问题?

问题描述 投票:0回答:1

添加VBA代码以添加自定义功能区后,我发现在工具栏中显示需要一些时间。在我们的Workbook open事件中调用用于创建功能区的VBA代码。

    Sub LoadCustRibbon(sDummy)
        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:sharedControls>" & vbNewLine
        ribbonXML = ribbonXML + "           <mso:button id='RefreshRow' label='RefreshRow' imageMso='Refresh' onAction='RefreshRow'/>" & vbNewLine
        ribbonXML = ribbonXML + "           <mso:button id='RefreshSheet' label='RefreshSheet' imageMso='RefreshAll' onAction='RefreshSheet'/>" & vbNewLine
        ribbonXML = ribbonXML + "       </mso:sharedControls>" & vbNewLine
        ribbonXML = ribbonXML + "     </mso:qat>" & vbNewLine
        ribbonXML = ribbonXML + "     <mso:tabs>" & vbNewLine
        ribbonXML = ribbonXML + "        <mso:tab id='RefreshTab' label='Refresh Scores' insertBeforeQ='mso:TabFormat'>" & vbNewLine
        ribbonXML = ribbonXML + "          <mso:group id='RefreshScoreGrp' label='Refresh Scores' autoScale='true'>" & vbNewLine
        ribbonXML = ribbonXML + "             <mso:button id='RefreshRow' label='RefreshRow' imageMso='Refresh' onAction='RefreshRow'/>" & vbNewLine
        ribbonXML = ribbonXML + "             <mso:button id='RefreshSheet' label='RefreshSheet' imageMso='RefreshAll' onAction='RefreshSheet'/>" & 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

我希望在打开工作簿时,功能区应立即显示。不确定我错过了什么。我使用了stackoverflow线程中的这段代码片段。

excel vba ribbon
1个回答
0
投票

通过在Workbook_Open事件中的LoadCustRibbon之后添加一个MsgBox,我确实有一个临时解决方案。但是我想把它带出来。有帮助吗?

    Private Sub Workbook_Open()
        Call LoadCustRibbon("")
        MsgBox "Please enable macros! Also, go through the 'Read Me' tab on how to use this workbook"
    End Sub
© www.soinside.com 2019 - 2024. All rights reserved.