Office 纯 VBA 环境下 Ribbon 功能区定制

所需软件:Microsoft Office 2007 以上版本,可视化功能区编辑器(原版下载 / 汉化版下载)。

关于可视化功能区编辑器:汉化版是本人在Andy Pope 的 RibbonX Visual Designer 2010 基础上汉化并加入UTF-8支持的版本。原版不支持创建中文字符的功能区。此外还加入了插件自动安装功能。


近期在网上看到有人问VBA环境下如何制作带有Ribbon定制菜单的插件的问题,部分人认为只能通过VSTO,部分人认为只能手工配置 XML(非常麻烦)。但对于习惯VBA的人来说,这些都不是最方便的方案,正好我对这个话题有点经验,在这里跟大家分享一下。

VBA-Ribbon-Example

(纯VBA环境下,为公司编写的简易系统,含有多种Ribbon控件)

以下用简要的例子,说明如何制作带Ribbon的插件。

安装Ribbon编辑器

解压下载的文件,双击打开其中的“RibbonEditor.xlam”文件,当出现宏提示时,点击“启用宏”。

如果是汉化版,在弹出的插件安装确认中,点击“是”。(安装功能是我增加的,原版没有这一步),那么插件一直是可用状态。

如果是原版,此时没有任何提示,插件已经可用,但下一次打开时要重复前述动作。

后续均以汉化版为例说明,英文版本除了语言,其余基本一样。

打开Ribbon编辑器

点击“文件”选项卡(或Excel图标),在左侧菜单下有“功能区设计”一栏,点击,在右侧出现的菜单中分成两栏。左栏是修改现有,右侧是新建文件。UI定义上有 “CustomUI” 和 “CustomUI14” 之分,区别是 “CustomUI”支持 Office 2007 及以后版本, “CustomUI14″支持 Office 2010 及以后版本。为了兼容,一般选择 “CustomUI”。

20150610121244

新建文件

点击右栏的“Excel”按钮,新建一个文件。

提示:修改现有文件的功能区时,可能会提示“您没有勾选”信任对VBA工程对象模型的访问”选项”,这时可以在“选项-信任中心-信任中心设置-宏设置”中勾选“信任对VBA工程对象模型的访问”选项。

在Tabs项下,增加一个选项卡并将标签设置为“测试选项卡”,在选项卡下增加一个组并将标签设置为“测试组”,在组下增加一个按钮并将标签设置为“测试”。额外地,将按钮的”id”设置为”TestAddin_BtnHelp”,”imageMso”设置为”HappyFace”,”size”设置为”large”。如图:

20150610124351

 

前往“调用”选项卡,勾选onAction事件,再前往“VBA调用函数”选项卡,可以看到刚刚勾选的事件的函数定义已经自动生成了:

[code lang=”VB” title=”自动生成的函数定义”]
Public Sub TestAddin_BtnHelp_onAction(control as IRibbonControl)

‘ Code for onAction callback. Ribbon control button

End Sub
[/code]

将这段内容复制出来,保存文件为“test.xlsm”。

提示:保存为“.xlsm”格式才可以保存宏代码

编辑事件代码

打开保存的文件为“test.xlsm”,此时已经可以看到增加的选项卡及按钮了,但点击“测试”按钮会提示无法运行宏。

按“Alt+F11”打开代码编辑器(VBE窗口),在“VBAProject (test.xlsm)”项下插件一个模块,粘贴下方的代码:

[code lang=”VB” title=”“测试”按钮所需代码”]
Public Sub TestAddin_BtnHelp_onAction(control As IRibbonControl)

‘ Code for onAction callback. Ribbon control button

MsgBox "这是一个测试按钮", _
vbInformation + vbOKOnly, "关于"
End Sub

[/code]

结果如图所示:

20150610125441

保存文件,关闭VBE窗口,再次点击“测试”按钮,将出现如下提示,完工:

20150610130710

 

其他要补充的

从易用性来说,VBA下编写Ribbon功能区并不如VSTO方便,尤其是下拉列表这类控件的处理,远不如可以将控件作为对象处理的VSTO方便。但VBA也有他的好,看各自的需求了。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注