ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 50108|回复: 80

[分享] RibbonX:EXCEL2013自定义功能区

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-17 13:48 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:UI界面定制
参考各位前辈做的自定义office2007和office2010功能区的帖子,经过不断摸索,现做出EXCEL2013版本的自定义功能区
再次特别感谢   佛山小老鼠  老师,灵感全来于此!!!!!下面进入正题:
第一步:创建EXCEL启用宏的工作簿  自定义.xlsm
        打开VBE编辑器,插入模块,建立2个测试的宏

  1. Sub 测试1(control As IRibbonControl)
  2.       msgbox "这是测试宏1"
  3. End Sub

  4. Sub 测试2(control As IRibbonControl)
  5.        msgbox "这是测试宏2"
  6. End Sub
复制代码
       保存并关闭 自定义.xlsm 工作簿
第二步:重命名 自定义.xlsm 为 自定义.xlsm.zip   (就是加一个.zip的后缀)
        1.右键用压缩工具打开文件,用记事本打开_rels文件夹里的.rels文件
        2.在最后一句 </Relationships> 前插入以下代码:
  1. <Relationship Id="customUIRelID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/CustomUI.xml"/>
复制代码
       3.关闭记事本,提示保存,选择保存
        4.关闭压缩文件,提示在压缩文件中更新变更,都点确定
第三步:新建一个customUI文件夹,新建一个文本文档
        打开文本文档另存为:ucstomUI.xml  ,编码选择为:UTF-8,保存到customUI文件夹里
        删除那个新建的文本文档
        
        用记事本打开customUI.xml文件,把以下代码复制进去后保存
  1. <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

  2.   <ribbon startFromScratch="true">

  3.   <qat>
  4.    <sharedControls>
  5.     <button idMso="FileSave" />
  6.     <button idMso="PrintPreviewAndPrint" />
  7.    </sharedControls>
  8.   </qat>

  9.     <tabs>

  10.       <tab id="rxtabCustom" label="我的自定义选项卡" insertBeforeMso="TabHome">

  11.         <group id="mygroupA" label="测试">

  12.               <button id="c1" image="A" label="测试宏1" size="large" onAction="测试1"/>

  13.               <button id="c2" image="B" label="测试宏2" onAction="测试2"/>

  14.         </group>

  15.      <group idMso="GroupViewShowHide" label="显示"></group>

  16.      <group id="mygroupB" label="常用工具">
  17.              <control idMso="Undo" size="large" label="撤销" />
  18.              <control idMso="Redo" size="large" label="恢复" />
  19.              <control idMso="CellAlignmentOptions" size="large" label="格式" />
  20.              <control idMso="ConditionalFormattingMenu" size="large" label="条件格式" />
  21.              <control idMso="Filter" size="large" label="筛选" />
  22.              <control idMso="DataValidationMenu" size="large" label="数据验证" />
  23.              <control idMso="ViewFreezePanesGallery" size="large" label="冻结窗格" />
  24.      </group>

  25.     <group id="mygroupD" label="VBA开发">

  26.             <control idMso="VisualBasic"  label="VBE编辑器" />

  27.             <control idMso="MacroRecord"  label="录制新宏" />

  28.             <control idMso="PlayMacro"  label="查看宏" />

  29.      </group>

  30.       </tab>

  31.     </tabs>

  32.   </ribbon>

  33. </customUI>
复制代码
下面分别解释各代码的意思:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="true">      (这个是隐藏所有系统功能区,如果不想隐藏可以写 = false)
  <qat>                                  (这里开始自定义快捷功能区,就是最顶端的位置)
   <sharedControls>
    <button idMso="FileSave" />               (保存按钮)
    <button idMso="PrintPreviewAndPrint" />    (打印预览和打印按钮)
   </sharedControls>
  </qat>                                   (快捷功能区定义完毕)
    <tabs>                                   (这里开始定义主功能区,以/tabs结束)
      <tab id="rxtabCustom" label="我的自定义选项卡" insertBeforeMso="TabHome">   (定义选项卡的名称和位置,这里定义在开始选项卡之前)
        <group id="mygroupA" label="测试">                                                       (第1组:这里定义组名称,注意所有的组名称和ID都不能重复)
              这2个按钮使用的是自己定义个个性图标,使用方法请看 第四步,如果想用系统自带的图标需要修改 image 改成 imageMSO ,然后省略第四步,图片名称及控件名称后面有附件
              <button id="c1" image="A" label="测试宏1" size="large"/>  (自定义按钮的ID,图片,指定宏 size="large" 表示是大图标显示)
              <button id="c2" image="B" label="测试宏2"/>                 (不想大图标显示就像这样去掉 size=)
        </group>                                                              (一个组定义完毕之后加上这么1句)
     <group idMso="GroupViewShowHide" label="显示"></group>                     (第2组:这一句表示加了一整个系统自带的组进去了,下面添加耽搁的系统按钮)
     <group id="mygroupB" label="常用工具">                                       (第3组:添加单个系统按钮)
             <control idMso="Undo" size="large" label="撤销" />                                 (撤销按钮)                           
             <control idMso="Redo" size="large" label="恢复" />                                  (恢复按钮)
             <control idMso="CellAlignmentOptions" size="large" label="格式" />                   (格式)
             <control idMso="ConditionalFormattingMenu" size="large" label="条件格式" />           (条件格式)
             <control idMso="Filter" size="large" label="筛选" />                                   (筛选)
             <control idMso="DataValidationMenu" size="large" label="数据验证" />                    (数据有效性)
             <control idMso="ViewFreezePanesGallery" size="large" label="冻结窗格" />                 (冻结窗口)
     </group>
    <group id="mygroupD" label="VBA开发">                                         (第4组:也是系统按钮)                    
            <control idMso="VisualBasic"  label="VBE编辑器" />                     (顾名思义,不一一解释了)
            <control idMso="MacroRecord"  label="录制新宏" />
            <control idMso="PlayMacro"  label="查看宏" />
     </group>                                                                      (第4组结束)
      </tab>                                           (第一个选项卡结束)
    </tabs>                                             (全部结束)
  </ribbon>
</customUI>
第四步:再customUI文件夹里再建2个文件夹 images 和 _rels
       1. 在images文件夹里加2张个性的png格式的图标 分别命名 001.png   002.png
       2. 在_rels文件夹里建一个文件,命名:CustomUI.xml.rels,方法参照第三步,然后把以下代码复制进去:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  3. <Relationship Id="A" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/001.png"/>
  4. <Relationship Id="B" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/002.png"/>
  5. </Relationships>
复制代码
第五步:再用压缩工具打开 自定义.xlsm.zip
        把做好的customUI文件夹拖到压缩文件里,保存
        然后再把 自定义.xlsm.zip  改名成: 自定义.xlsm

        打开文件,可能有2次提示,每次都点确定
        文件打开之后,你会看到最顶端你的文件名会显示 自定义.xlsm[修复的],出现这种情况,你只需把文件另存为启用宏的工作簿就正常了!!!
        再打开文件即可看到效果

基本功能已经完成,这个只能让你现在做的这个文件的功能区改变,如果想要让你的电脑整个应用这个设置请继续往下看:

第六步:把你做好的文件做成加载宏,并做一个安装和卸载的功能:
     1.新建一个文件夹,取名为excel2013功能区安装与卸载
     2.把 自定义.xlsm 工作簿另存为加载宏工作簿,保存类型选择“Excel 加载宏(*.xlam)",保存在 excel2013功能区安装与卸载 文件夹里,文件名不变
     3.新建一个启用宏的工作簿(*.xlsm),文件名为“2013安装””,在thisworkbook模块里放入以下代码
  1. Private Sub Workbook_Open()

  2.      AddIns.Add Filename:=ThisWorkbook.Path & "\自定义.xlam"
  3.      Application.AddIns("自定义").Installed = 1

  4. End Sub
复制代码

        然后保存,关闭工作簿
      4.依照第3步,建一个 2013卸载 启用宏的工作簿,在thisworkbook模块里放入以下代码
  1. Private Sub Workbook_Open()
  2.     On Error Resume Next
  3.    AddIns("自定义").Installed = False
  4. End Sub
复制代码

        然后保存,关闭工作簿
OK,整个制作过程完毕

附件1:做好之后的效果: 自定义.zip (52.12 KB, 下载次数: 2985)
附件2:做成加载宏: excel2013自定义功能区安装与卸载.zip (69.76 KB, 下载次数: 1749)
附件3:系统图标提取器(网上收集): 功能区图标提取器.zip (116.68 KB, 下载次数: 1415)
附件4:Excel2013主功能区各控件的英文名称与功能区面板对照: Excel2013主选项卡控件名中英对照.zip (50.72 KB, 下载次数: 1293)

  注:附件4是本人从Microsoft网站上下载的 OFFICE2013 控件名称及类型,然后对比EXCEL2013,只截取了里面的Excel部分
        然后将控件的英文名与面板上的按钮对照做了个简单的翻译,难免有出错的地方,如有不对欢迎指正!!!!!!!!


评分

6

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-17 13:52 | 显示全部楼层
本帖最后由 lichangjun2012 于 2013-8-17 16:41 编辑

!!!!!!!!!!!!!!!!!!!!!

点评

要求有点...  发表于 2013-8-17 14:37

TA的精华主题

TA的得分主题

发表于 2013-8-17 14:02 | 显示全部楼层
这么牛的东东,学习,感谢分享   

TA的精华主题

TA的得分主题

发表于 2013-8-17 14:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
2013本身就可以选择自定义功能区啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-17 15:05 | 显示全部楼层
本帖最后由 lichangjun2012 于 2013-8-17 15:08 编辑
东亚五金 发表于 2013-8-17 14:59
2013本身就可以选择自定义功能区啊

你能定义一个这样的吗?
123.png

用自带的自定义确实可以定义成这样,但是文件改变位置之后,自定义的宏就不能用了,不知是什么原因

如果知道请指教,曾为此苦恼过一段时间了

TA的精华主题

TA的得分主题

发表于 2013-8-19 11:28 | 显示全部楼层
lichangjun2012 发表于 2013-8-17 15:05
你能定义一个这样的吗?

请问大师,我想在“button”按钮中设置快捷按钮,怎么在XML中添加代码?想这样“粘贴(P)”这样形式的。

点评

http://club.excelhome.net/thread-709306-1-1.html “练习”附件中包含示例“44_239_创建keytip”,可参考。  发表于 2013-10-31 13:53

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-19 18:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
LIUZHU 发表于 2013-8-19 11:28
请问大师,我想在“button”按钮中设置快捷按钮,怎么在XML中添加代码?想这样“粘贴(P)”这样形式的。

看到你2月份发的求助帖了,至今还未解决!还能如此坚持不懈的找答案,你真是神人!佩服了!
我也是刚刚开始摸索,暂时帮不到你

TA的精华主题

TA的得分主题

发表于 2013-8-19 19:04 | 显示全部楼层
LIUZHU 发表于 2013-8-19 11:28
请问大师,我想在“button”按钮中设置快捷按钮,怎么在XML中添加代码?想这样“粘贴(P)”这样形式的。

http://www.excelperfect.com/index.php/2009/11/17/ribbonxstudy36/

TA的精华主题

TA的得分主题

发表于 2013-8-20 10:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
直接封装来的更快。。。

TA的精华主题

TA的得分主题

发表于 2013-8-20 10:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我需要能禁用Excel2007中“Excel 选项(I)”或者其中子项的方法,有谁知道怎么用CustomUI实现吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 20:22 , Processed in 0.039842 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表