Лента, добавленная с помощью кода VBA, требует времени для отображения в Excel ... Похоже, проблема обновления? - PullRequest
0 голосов
/ 15 апреля 2019

После добавления кода VBA для добавления пользовательской ленты я вижу, что на панели инструментов требуется время. Код 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.

1 Ответ

0 голосов
/ 17 апреля 2019

У меня есть временное решение, добавив MsgBox сразу после события LoadCustRibbon в Workbook_Open.Но я хотел бы показать ленту без нее.Любая помощь?

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...