我一直在开发使用功能区的 Excel 插件。一切都很好,直到我尝试添加一些自定义 16 x 16 图标。在办公室里,我们有 Excel 2007,那就是
Microsoft Office Excel 2007 (12.0.6683.5002) SP3 MSO (12.0.6683.5000)
我的 WinZip 是
WinZip 15.0 (9334)
当我以 Zip 文件形式打开 .xlam 文件时,我当前有 customUI\_rels 和 customUI\images 子目录。我的 customUI.xml.rels 文件的内容是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="nbinsert" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/nbinsert.png" />
<Relationship Id="nbchange" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/nbchange.png" />
<Relationship Id="nbdelete" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/nbdelete.png" />
</Relationships>
配套的 customUI\images 子目录为空。
在此阶段,文件可以正确打开。主要的 customUI.XML 甚至没有引用这些新图标。相关部分如下所示:
<box id="box01b" boxStyle="horizontal">
<button id="bb00" onAction="NB.wrChange" imageMso="ChangeBinding"
getScreentip="NB.wrChangeScreentip" getSupertip="NB.wrChangeSupertip" />
<button id="bb01" onAction="NB.wrInsert" imageMso="RecurrenceEdit"
getScreentip="NB.wrInsertScreentip" getSupertip="NB.wrInsertSupertip" />
<button id="bb02" onAction="NB.wrDelete" imageMso="CancelRequest"
getScreentip="NB.wrDeleteScreentip" getSupertip="NB.wrDeleteSupertip" />
</box>
我不使用自定义 UI 编辑器,所有 XML 都是手动编码或生成的。
一旦图标进入,我就必须进行更改,例如将 imageMso="ChangeBinding" 更改为 image="nbchange"。至少,这是我所希望的。
然后,我将新图标(三个 .png 文件)复制到 images 子目录中,保存并重命名回 .xlam 文件。当它尝试打开插件时,Excel 会发出上述错误消息。因此,在我删除这些有问题的图标后,插件可以正确打开。
在 Word 2010 中,我的图像子目录中存在额外的、未引用的图标,这没有任何问题。此外,对 XML 中不存在的图标的引用会导致图标根本不显示,但绝不会出现错误。
自定义图标是否有什么特殊之处需要观察才能正常工作,例如没有透明度?或者插件文件是如此脆弱和敏感?或者我应该尝试更高版本的 WinZip?
这些图标最初是在 www.iconfinder.com 上找到的,然后使用 MS Paint 将其缩小(最初为 32 x 32,然后缩小为 16 x 16)。我也尝试将它们更改为 24 色 .BMP 图标,但遇到了同样的问题。
我在 Excel 2010 中有自定义图标(从同一位置复制,但尺寸为 32 x 32),运行起来没有任何问题。
如有任何建议,我们将非常欢迎。