(图片来源网络,侵删)
如何把自己常用的EXCEL宏代码进行合理的组织,得到类似于EXCEL原生选项卡上的菜单?下面Step by Step的演示,如何从自己原始的代码开始,得到最终的成品。步骤一,准备好原始的代码,以备导入或者复制。步骤二,新建一个EXCEL文件,并另存为XLAM格式步骤三,安装Office Custom UI Editor,见附件1说明:用该软件打开XLAM文件,复制以下的XML语句,保存后退出<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" ><ribbon startFromScratch="false"><tabs><tab id="TA89" label="A89-其他工具"><group id="GA89B11" label="B11-CAD工具"><menu id="MA89B11C01" label="B11-CAD工具" image="A8911" size="large" itemSize="normal" ><button id="A89B11C01" label="C01-批量替换多对文本" onAction="Dingmurch01SU_04bRA_A89B11C01" imageMso="SkipOccurrence"/><button id="A89B11C02" label="C02-批量锁定全部图层" onAction="Dingmurch01SU_04bRA_A89B11C02" imageMso="FileDocumentEncrypt"/></menu><button id="A89B11C03" label="C03-批量解锁全部图层" onAction="Dingmurch01SU_04bRA_A89B11C03" imageMso="QueryBuilder"/><button id="A89B11C04" label="C04-批量合并多张图纸" onAction="Dingmurch01SU_04bRA_A89B11C04" imageMso="SplitCells" /></group></tab></tabs></ribbon></customUI>即可得到以下效果简单而言,记住关键字和实物之间的对应关系即可TAB对应选项卡GROUP为同一选项卡下的分组MENU为需要点击后弹出式菜单BUTTON为具体的某个对应功能的菜单,注意以上实例,BUTTON可以在MENU的下级,也可以直接在GROUP下级。<tab id="TA89" label="A89-其他工具"><group id="GA89B11" label="B11-CAD工具">TAB和GROUP有两个关键字,ID和LABEL,其中的ID只要不重复可以随意命名,LABLE即最终体现到加载项的可见文字<menu id="MA89B11C01" label="B11-CAD工具" size="large" itemSize="normal" >MENU中也有ID和LABEL,功能同上,另外它增加了SIZE和TIEMSIZE,SIZE取large,则它在选项卡上占三行的空间,如果normal则像C03-按钮一样,占一行的高度<button id="A89B11C01" label="C01-批量替换多对文本" onAction="Dingmurch01SU_04bRA_A89B11C01" imageMso="SkipOccurrence"/>BUTTON中也有ID和LABE,SIZE,功能同上,另外它增加了OnAction,这个即为需要调用的宏或者过程名称。imageMso为对应的图标步骤四,移植原始代码并套壳例如原始代码有个过程Sub Dingmurch01SU_03bMA_A83B04C21()'【A对应菜单】'【B对应功能】'【C调试时间】2021.04.12Dim GB02CAEA03Batch_Input As RangeDim GB02CAEA03Batch_Output1 As IntegerDim GB02CAEA03Batch_Aux As IntegerDingstringlen = InputBox("输入随机数最大范围", Dingmurch10PB_00VER_MBOX, "")If Dingstringlen <> "" And IsNumeric(Dingstringlen) = True ThenSet MYrg = Application.SelectionFor Each GB02CAEA03Batch_Input In MYrgk = Round(Rnd Dingstringlen, 2)If k = 0 Thenk = 10 ^ -2ElseGB02CAEA03Batch_Input = kEnd IfNextEnd IfEnd Sub这个“Dingmurch01SU_03bMA_A83B04C21”不能直接用于OnAction,需要如下方式套个壳Sub Dingmurch01SU_04bRA_A83B04C21(control As IRibbonControl)Dingmurch01SU_03bMA_A83B04C21End Sub步骤5,为每个按钮选择图标,本步骤利用EXCELHOME论坛下载的一个加载项解决,见附件2。由于XML配置文件内容庞杂每次修改不太方便,因此本人用EXCEL表格搭建了一个快速生成配置文件的功能,详细见附件3,本文生成的示例文件见附件4。附件3使用说明根据Q列的文件头,复制相应的行并插入对应的位置,然后填写AA,AB,AC,AD,AE,AF等相关列,完成后只需要完整复制Y列的内容,即可完成XML文件的更新。PS:XML文件还有更多的标签或者属性, getVisible, screentip,supertip, tag等,可以实现根据权限展示或者隐藏某个按钮的功能,有兴趣的可以自行测试研究。PS+:以上附件,可从以下任一位置下载https://cloud.189.cn/t/amqiqeYfiiIzhttps://caiyun.139.com/m/i?015CHbpdG1oXC提取码:S4oL
0 评论