vba - 如何在 Office 文件中嵌入自定义功能区的图像

标签 vba excel ribbon

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

感谢任何帮助!

最佳答案

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

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

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

关于vba - 如何在 Office 文件中嵌入自定义功能区的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686125/

相关文章:

excel - VBA - 形状 - .name - 运行时错误 '7' : Out of Memory

excel - 从特定日期计算 12 个月前的日期

excel - 将用户窗体与 Excel 中的单元格对齐

c# - Outlook 2010 COM 加载项不会为所有用户安装

vba - 如何使用用户定义的类型?

vba - 带有 vba 数组的数据验证列表

excel - 如果 B 列不为空,则在 C 列中插入公式

c++ - 如何将值传递给 MFC 消息映射函数 on_command

CSS垂直扩展元素并移动伪元素