带有function区菜单的Excel插件

我们开发了一个包含一些基本function的excel插件(.xlam)文件

例如MySum(a,b),并返回我想要的总和等等

然后我保存在networking上的文件,并安装在其他人使用excel

文件 – >选项 – >加载项

使excel参考networking插件的作品如魅力。 每个人都可以在本地的Excel应用程序上使用MySum()函数。

现在我想把它带到一个新的水平,即我想在function区菜单上合并相同的function,例如,我们创build一个.exe文件用户安装它,菜单将出现在用户excelfunction区名为MySum,这将改善添加更多function的灵活性,并使最终用户更容易。

我听到和使用了一些第三方软件function区菜单(使用xll文件)相同的方式,我知道它也可以通过Visual Studio来完成。 我只是想得到专家的意见,什么是我的情景最好的办法。

任何帮助感激!

使用自定义用户界面编辑器自己制作自定义function区是非常容易的。 注意 – 这在Mac上不起作用,因为我们在微软的朋友似乎认为能够在两个平台上以相同的方式控制外接程序的外观并不重要。 给我一杯啤酒,我会告诉你我真的在想什么。

无论如何,你不需要Visual Studio的路线。 只要去

http://www.rondebruin.nl/win/s2/win001.htm

罗恩·德·布鲁恩(Ron de Bruin)就如何做到这一点做了一个很好的介绍。 只要按照步骤 – 它的作品。 编辑源代码(在转换为插件之前),添加一些描述所需function区组件的XML。 您可以隐藏现有的组件,添加新组到现有的色带,创build自己的选项卡…甚至很容易做出好看的图标,使您的button看起来很酷/个性化/专业(我用Axialis图标车间devise一些图标,我是相当自豪….)

如果你卡住了,问!

这里的更新是一个XML的例子,在Home标签之后产生一个新的标签,并且放置两组button:

<mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"> <mso:ribbon> <mso:qat /> <mso:tabs> <mso:tab id="myTab" label="Awesome functions" insertAfterMso="TabHome"> <mso:group id="myGroup1" label="Awesome math" autoScale="true"> <mso:button id="id_sum" label="sum" image="sigma" size="large" onAction="UI_doMath" /> <mso:button id="id_mult" label="multiply" image="times" size="large" onAction="UI_doMath" /> <mso:button id="id_var" label="variance" image="variance" size="large" onAction="UI_doMath" /> </mso:group> <mso:group id="myGroup2" label="Awesome text" autoScale="true"> <mso:button id="id_bold" label="really bold" image="bold" size="large" onAction="UI_doText" /> <mso:button id="id_italic" label="italicize" image="italic" size="large" onAction="UI_doText" /> </mso:group> </mso:tab> </mso:tabs> </mso:ribbon> </mso:customUI> 

正如你所看到的,每个组调用自己的函数 – 一个组调用UI_doMath ,另一个调用UI_doText 。 潜艇的签名看起来有点像这样:

 Sub UI_doMath(controlID As String) Select Case controlID Case "id_sum" call sumTheStuff Case "id_mult" call multiplyStuff Case "id_var" call computeVariance Case Else MsgBox "Unknown button: '" & controlID & "' was clicked!" Exit Sub End Select End Sub 

这样,单个例程就是function区中一个组中所有button的入口点。 我认为,使代码更容易维护。 对我来说尤其如此,因为我实际上有一个“平台独立”的版本 – 也就是说,无论你从菜单(在Mac上)还是在function区(在PC上)select了一个项目,你最终都会执行相同的function。 但是,这是一个改进,我希望你不需要。