Excel中RibbonX API不工作时设置透明图标

Excel中RibbonX API不工作时设置透明图标,excel,vba,transparency,ico,ribbonx,Excel,Vba,Transparency,Ico,Ribbonx,我正在尝试使用RibbonX API为我的Excel加载项设置一个透明图标。这是我的XML: <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" loadImage="gui_LoadImage"> <ribbon> <tabs> <tab id="CBtab" label="2019CBMaster"> <gro

我正在尝试使用RibbonX API为我的Excel加载项设置一个透明图标。这是我的XML:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" loadImage="gui_LoadImage">
  <ribbon>
    <tabs>
      <tab id="CBtab" label="2019CBMaster">
        <group id="visualizationGroup" label="Visualization">
          <button id="btnHistogram" label ="Press here" enabled="true" screentip="Press and see how magic happens" image="icn_btnHistogram.jpg" size="large"/>
        </group>
        <group id="NewGroup" label="2019NewGroup" >
          <box id="bxBo">
            <button id="btnNew" label="Press" image="icn_btnHisto.jpg" size="large"/>
            <menu id="mnMenu" image="btn_img_random.jpg">

            </menu>
          </box>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
我在GIMP中将gg.ico保存为24 bpp和1位alpha ico文件。我还尝试了外部ico-s,但它们没有显示出来

正如您从上面了解到的,图标不会显示为完全透明

你能帮忙吗

另外,这个RibbonX API仍然受支持吗?我想知道,因为我在做一件非常基本的事情时有困难,而且几乎找不到文档。如果没有,开发带有可定制功能区的Excel外接程序的现代框架是什么


谢谢。

自定义功能区UI图标可以是透明的。我相信它们一定是.png文件。以下是有关UI功能区图标设置的详细信息,其中包括透明背景

修改

在自定义UI编辑器中,您可以导入图像文件,然后只引用XML代码中的文件名。我认为,文件类型和图像本身是否具有透明背景决定了它是否透明地显示在功能区上。这就是XML的样子<代码>

在查看XML代码时,我看到图像中包含了文件扩展名。我的自定义图像图标中不包含文件扩展名。在我链接的自定义UI编辑器中,可以添加导入图像文件(显示在侧窗格中),然后在XML中仅引用文件名(无文件扩展名)。我还认为是文件类型本身以及图像是否具有透明背景决定了它是否在功能区中透明显示。jpg文件不能是透明的,所以这可能就是您的问题所在。如果您的UI编辑器无法容纳PNG文件,请尝试使用GIF。图标太小了;图像质量不应该是个问题

以下是一个例子:

<splitButton id="splitButton2" size="large" >   
<button id="InsertTools" label="Insert" image="InsertTools_Transparent" />  
<menu id="menu2">   
<button id="buttonInsertMultiSheets" onAction="ModRibbon.Run_InsertMultipleSheets" label="Insert Multiple Sheets" screentip="Add multiple worksheets at one time.  An input box will appear for you to enter the number of sheets to be added."  image="WorksheetAddMultipleSheets" />  
</menu> 
</splitButton>
从代码来看,似乎还需要调用来加载图像,因此customUI控件有两个回调:

Sub LoadImage (imageID As String, ByRef image)

Sub OnLoad(ribbon As IRibbonUI)
如果您还有[Content\u Types].xml,那么默认类型是PNG,您需要在文件的最末尾添加一行,但在前面添加一行,然后保存更改

<Default Extension="jpg" ContentType="application/octet-stream"/>

功能区UI上图标的建议文件格式为PNG。Microsoft Office功能区和工具栏支持ICO、BMP和ICO文件。因此,我建议将VBA宏转换为COM加载项,以便轻松加载此类图像

你可能会发现这篇文章很有帮助。以下系列文章将深入介绍Fluent UI:


好的,一种解决方法是在Excel中设置背景颜色以匹配周围的功能区颜色。。。愚蠢的我!奇怪的是,我之前没有想到。。。但问题仍然存在,我猜谢谢,我读过了。问题是stdole.LoadPicture不接受。pngOkay,让我看看我的代码。我的自定义UI功能区上有透明图标,所以我知道这是可以做到的。这就是我使用的。这很容易。但在本例中,您使用的是默认图标imageMso,我要做的是加载我自己的图标。当我第一次开始使用自定义功能区时,我使用了很多我自己的图标,但现在大多只使用Office图标库,因为您不必添加图像文件,只需参考MSO名称即可。我还没有找到很多关于它的文档。谢谢你的回答,但我不想参与COM附加组件。我所有的东西都在Excel文件中,希望能够快速编辑它。
'Callback for buttonInsertMultiSheets onAction
Sub Run_InsertMultipleSheets(control As IRibbonControl)
End Sub
Sub LoadImage (imageID As String, ByRef image)

Sub OnLoad(ribbon As IRibbonUI)
<Default Extension="jpg" ContentType="application/octet-stream"/>