以编程方式将自定义图标设置为添加的功能区按钮

时间:2019-01-02 10:55:47

标签: excel vba excel-vba

我正在尝试通过VBA将两个图标以编程方式添加到新的功能区组中。我可以添加内置图标,但无法弄清楚如何使用自己的文件。

TLDR:如果将内置图标使用imageMso属性,而不使用自定义图标使用image属性或getImage回调,则下面的代码有效。

这是我正在使用的XML

<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
    <ribbon>
        <tabs>
            <tab id='customTab' label='CP Analyzer' insertAfterMso='TabData'>
                <group id='idCPA' label='CP Analyzer'>
                    <button id='customButton1' label='Select Column' size='large' onAction='SelectColumn' image='imgLabel' />
                    <button id='customButton2' label='Run Change Point Analyzer' size='large' onAction='RunCP' image='imgFast' />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

我在与包含上述代码的加载项相同的文件夹中有两个.png文件(分别称为imgLabel.png和imgFast.png)。通过使用Microsoft Custom UI Editor验证语法,image='myImageName'正确无误,并且在使用UI编辑器时有效,但在VBA中以编程方式使用时无效。

如何引用这些图像?

这是完整的代码,它可以通过修改Excel.officeUI主文件来工作:

Sub AddR

Dim hFile As Long
Dim path As String, filename As String, ribbonXML As String, user As String

hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
filename = "Excel.officeUI"

ribbonXML = ' the XML above

Open path & filename For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile

End Sub

我尝试使用描述为here的getImage回调方法,该回调方法对于独立文件而言效果很好,但不能作为外接程序使用,这对我来说很重要。

特别是,使用“自定义UI”编辑器,您可以在嵌入到Excel文件中的自定义UI XML文件中设置回叫请求。因为我不能这样做,但我需要它作为外接程序,因为它只是包含的代码(至少经过一整天的搜索,我找不到方法)。因此,我在上面通过编程方式尝试更改主Excel.officeUI文件(并在用户禁用该加载项时将其更改回默认值)。

0 个答案:

没有答案