Я пытаюсь программно добавить две иконки в новую группу лент с помощью 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 (и вернуть его по умолчанию, когда пользователь отключает надстройку).