Лента XML не имеет возможности указывать большие и маленькие значки как часть своего определения.Если вы используете атрибут image
, вы можете предоставить только одно изображение.
Также нет способа узнать, уменьшает ли Office размер ленты.Вам нужно будет провести некоторое исследование, проверив, какая ширина окна запускает изменение размера, а затем вы можете использовать событие WindowResize
объекта Application, чтобы сделать недействительными элементы управления, изменив изображение (и, возможно, размер элемента управления).
Чтобы предоставить более одного значка, вам потребуется использовать атрибут обратного вызова getImage
, чтобы сообщить Ленте, какое изображение использовать.Это не так просто, как передача строкового значения файла, хранящегося в документе Office, поскольку функция обратного вызова ожидает объект IPictureDisp
;изображение должно храниться вне документа Office в виде файла.
Сложности использования getImage
описаны в Настройка ленты Office Fluent 2007 для разработчиков (часть 1 из 3) , ближе к концу статьи, но предоставленный код есть для .NET Framework.
На самом деле немного проще кодировать с использованием VBA, поскольку библиотека stdOle
, предоставляющая IPictureDisp
, являетсяофисная библиотека.Вам нужно установить ссылку на библиотеку - в инструментах / справках редактора VBA она помечена как OLE Automation
.Обратите внимание, что это не работает с графическим форматом файла png - библиотека немного устарела ...
Public Sub GetIconImage(control As IRibbonControl, ByRef image)
Dim sPicPath As String
Dim stdPic As StdPicture
sPicPath = "C:\Users\[userName]\Pictures\test.jpg" 'Schweiz.png"
Set stdPic = stdole.StdFunctions.LoadPicture(sPicPath)
Set image = stdPic
End Sub