6

我正在为 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 打开文件并保存它时,它们被自动删除...

任何帮助表示赞赏!

4

2 回答 2

1

如果图像嵌入在 customUI 中,则不需要 VBA 将它们添加到控件中。只需对标签中的图像使用相同的 ID image

<button id="button1" label="Test" size="large" image="TestID" onAction="ButtonOnAction" />

我的示例使用 ID“TestID”处理图像,该图像必须在 customUI XML 中找到 -在自定义 UI 编辑器customUI中展开节点以查找或更改图像 ID(或使用编辑器添加新图像)。

于 2012-10-02T09:39:14.283 回答
0

来自UtterAccess.com的 robcooper 的回答可能会有所帮助:

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
于 2020-04-11T09:41:47.030 回答