Программно установить пользовательский значок для кнопки добавленной ленты - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь программно добавить две иконки в новую группу лент с помощью VBA.Я могу добавить встроенные значки отлично, но не могу понять, как использовать мои собственные файлы.

TLDR: приведенный ниже код работает, если используются встроенные значки с атрибутом imageMso, но не с пользовательскими значками, использующимиimage атрибут или обратный вызов getImage.

Вот XML, который я использую

<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
    <ribbon>
        <tabs>
            <tab id='customTab' label='CP Analyzer' insertAfterMso='TabData'>
                <group id='idCPA' label='CP Analyzer'>
                    <button id='customButton1' label='Select Column' size='large' onAction='SelectColumn' image='imgLabel' />
                    <button id='customButton2' label='Run Change Point Analyzer' size='large' onAction='RunCP' image='imgFast' />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

У меня есть два файла .png (называемые imgLabel.png и imgFast.png)в той же папке, что и надстройка, содержащая приведенный выше код.Использование Microsofts Custom UI Editor для проверки синтаксиса: image='myImageName' правильный и работает при использовании UI Editor, но не при программном использовании в VBA.

Как я могу ссылаться на этиimages?

Вот полный код, он работает путем изменения основного файла Excel.officeUI:

Sub AddR

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 = ' the XML above

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

End Sub

Я попытался использовать обратный вызов getImage, описанный здесь , которыйотлично работает для отдельного файла, но не как надстройка, что для меня очень важно.

В частности, с помощью редактора пользовательского интерфейса вы можете задать запрос обратного вызова в XML-файле пользовательского интерфейса, который внедряется в файл Excel.Потому что мне это нужно как надстройка, хотя я не могу этого сделать, так как включается только код (по крайней мере, я не могу найти способ после поиска по этому весь день).Отсюда моя программная попытка изменить основной файл Excel.officeUI (и вернуть его по умолчанию, когда пользователь отключает надстройку).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...