XML语言编写的工具使用的是Custom UI Editor For Microsoft Office 先来介绍一下Custom UI Editor的使用
点击“插入”按钮,插入 Office 2010 Custom UI Part,产生xml文件,这就可以在右侧编写代码。 注意: ① Office 2010 Custom UI Part适用2010-2016版本的Excel,只是按钮描述没有更新。 ② 打开Excel文件时注意要关闭源文件,以免出错。 编写完代码点击Validate按钮,验证代码语法有无出错 最后一个按钮是回调事件,在插入自定义控件,需要使用回调事件响应编写的宏,点击后会自动生成一个有开始语句、结束语句、参数的基本结构,就和插入工作簿事件一样。我们就在里面编写代码。 下面用一些实例讲解怎么写XML文件。 一、添加标签 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> '根语句,固定的 <ribbon> '功能区块 <tabs> '标签集合 <tab id="tab1" label="My Tab1" insertBeforeMso="TabInsert"> '添加一个标签,在插入选项卡之前 </tab> '第一个标签结束 <tab id="tab2" label="My Tab2"> </tab> '第二个标签结束 </tabs> </ribbon> </customUI> '结束语句 ①代码基本结构,第一句和最后一句是根语句,固定的。 ②<ribbon>和</ribbon>是功能区块,代码都要写一对。 ③<tabs>和</tabs>是标签集合 ④插入了两个标签,所以有两个</tab>的结束语句。 ⑤注意大小写! ⑥tab语句中id指标签的名称(唯一的),label设置标签显示出来的名称,insertBeforeMso后接插入位置。 二、添加分组 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> '根语句 <ribbon> '功能区 <tabs> '标签集合 <tab id="tab1" label="My Tab1"> '添加标签 <group id="g1" label="My group1"> '添加第一个组别 </group> '第一个组别的结束语句 <group id="g2" label="My group2"> '添加第二个组别 </group> '第二个组别的结束语句 </tab> '标签结束语句 </tabs> '标签集合结束语句 </ribbon> '功能区结束语句 </customUI> '根语句结束语句 组别group是指在标签下的分组,所以需要写在标签添加语句的下面。记得有始有终,写对应的结束语句。 三、添加按钮 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tab1" label="My Tab1"> <group id="g1" label="My group1"> <button id="b1" label="Copy" onAction="AA" size="large" imageMso="Copy"/> '添加按钮 <separator id="S1" /> '分割线 <button id="b2" label="Paste" onAction="AA" imageMso="Paste"/> <button id="b3" label="pig" onAction="AA" imageMso="Piggy"/> </group> </tab> </tabs> </ribbon> </customUI> ① onAction 按钮运行的宏 ② size 按钮的大小,large是大图标,不设置默认是小尺寸 ③ imageMso 显示的图标(Excel内置图标) ④ separator 设置分割线 ⑤ 可以看到上面三个按钮运行的都是同一个宏AA,但效果可以设置不一样,在宏里对按钮的id进行判断,来实现不同功能。这里用到了回调程序。 也需要在EXCEL里写对应的宏: 'Callback for b1 onAction Sub AA(control As IRibbonControl) If control.ID = "b1" Then MsgBox "B1" ElseIf control.ID = "b2" Then MsgBox "B2" Else MsgBox "B3" End If End Sub 四、添加复选框 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tab1" label="My Tab1"> <group id="g1" label="My group1"> '添加复选框 <checkBox id="c1" label="Show 0" onAction="CC"/> '切换按钮 <toggleButton imageMso="TranslationToolTip" id="t1" size="large" label="Is Number" onAction="TT"/> </group> </tab> </tabs> </ribbon> </customUI> 调用回调事件,复制回调事件中显示的基本代码结构到Excel VBA编辑器,在基本代码机构中编写宏: ①CC Sub CC(control As IRibbonControl, pressed As Boolean) If pressed = True Then MsgBox "显示0值" Else MsgBox "不显示0值" End If End Sub ②TT 'Callback for t1 onAction Sub TT(control As IRibbonControl, pressed As Boolean) If pressed = True Then MsgBox "显示数字" Else MsgBox "不显示数字" End If End Sub 复选框和切换按钮的可设置的参数和按钮差不多,参数位置可以随意调动, 五、添加组合和下拉框 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tab1" label="My Tab1"> <group id="g1" label="My group1"> <comboBox id="C1" label="Sheet Select1" onChange="FFF"> '添加组合框 <item id="item1" label="Sheet1" imageMso="_1" /> '添加项目 <item id="item2" label="Sheet2" imageMso="_2" /> <item id="item3" label="Sheet3" imageMso="_3" /> </comboBox> <dropDown id="Dr1" label="Sheet Select2" onAction="GGG"> '添加下拉框 <item id="Dept1" label="Sheet1" /> <item id="Dept2" label="Sheet2" /> <item id="Dept3" label="Sheet3" /> </dropDown> </group> </tab> </tabs> </ribbon> </customUI> 回调事件的宏: ① 复选框的回调代码 'Callback for C1 onChange Sub FFF(control As IRibbonControl, text As String) Sheets(text).Select End Sub ② 下拉框的回调代码 'Callback for Dr1 onAction Sub GGG(control As IRibbonControl, id As String, index As Integer) Sheets(index + 1).Select End Sub 2. 代码 下拉框的回调代码index,表示下拉框选取的位置。 index的计数是从0开始,想表示第一个工作表就要index + 1。 六、添加内置功能 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tab1" label="My Tab1"> '添加新的选项卡 <group id="g1" label="My group1"> '添加新的组别 <control idMso="NameManager" /> '添加内置功能,名称管理器 </group> <group idMso="GroupSize" /> '添加内置组别,大小 </tab> </tabs> </ribbon> </customUI> idMso表示内置选项卡、组别或功能的id,是已经存在的,而非新的。 七、指定选项卡添加新组 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab idMso="TabInsert" label="My Tab1"> '在插入的内置选项卡 <group id="g1" label="My group1"> '添加组别 <control idMso="NameManager" /> '添加内置变量,名称管理器 </group> </tab> </tabs> </ribbon> </customUI> |
|
来自: 十月波波 > 《VBA中的XML》