我正在为Excel开发自定义功能区扩展,其中控件需要不同的自定义图像。我设法使用位于我的文件系统中的一些图像,但我想将这些图像嵌入到.xlsm文件中。 是否可以执行此操作并从更新控件图像的VBA代码中引用它们?
出于测试目的,这是定义我的自定义功能区的XML:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded">
<ribbon>
<tabs>
<tab idMso="TabHome" >
<group id="customGroup1" label="My Group" insertAfterMso="GroupFont">
<button id="customButton1" label="Click Me" size="large" onAction="Macro1" getImage="getButtonImage"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
这是改变customButton1
控件图像的宏:
Dim imgIndex As Long
Public Sub getButtonImage(ByVal control As IRibbonControl, ByRef Image)
Select Case control.ID
Case "customButton1"
Set Image = LoadPicture("img" + Trim(Str(imgIndex)) + ".bmp")
imgIndex = (imgIndex + 1) Mod 2
End Select
End Sub
我尝试在.xlsm中添加bmp文件并引用它们更新关系文件(.rels),但我不知道如何从VBA引用它们,最重要的是,当我用Excel打开文件时保存,它们会被自动删除......
感谢任何帮助!
答案 0 :(得分:1)
如果图像嵌入在customUI中,则不需要VBA将它们添加到控件中。只需在image
代码中为图片使用相同的ID:
<button id="button1" label="Test" size="large" image="TestID" onAction="ButtonOnAction" />
我的示例是使用ID“TestID”处理图像,该图片必须在customUI XML中找到 - 展开Custom UI Editor中的customUI
节点以查找或更改图像ID(或使用编辑器添加新图像)。
答案 1 :(得分:0)
robcooper在UtterAccess.com中的回答可能会有所帮助:
Public Sub getButtonImage(ByVal control As IRibbonControl, ByRef image)
'for use in Access 2007 Ribbon control
'requires a reference to the Micrsoft Office 12.0 Object Library
Select Case control.ID
Case "cmdMainMenu"
Set image = LoadPicture(CurrentProject.Path & "\home.bmp")
End Select
End Sub