转自http://club.excelhome.net/thread-1047254-1-1.html
参考各位前辈做的自定义office2007和office2010功能区的帖子,经过不断摸索,现做出EXCEL2013版本的自定义功能区
再次特别感谢 佛山小老鼠 老师,灵感全来于此!!!!!下面进入正题:第一步:创建EXCEL启用宏的工作簿 自定义.xlsm
打开VBE编辑器,插入模块,建立2个测试的宏
Sub 测试1(control As IRibbonControl)
msgbox "这是测试宏1"
End Sub
Sub 测试2(control As IRibbonControl)
msgbox "这是测试宏2"
End Sub
保存并关闭 自定义.xlsm 工作簿
第二步:重命名 自定义.xlsm 为 自定义.xlsm.zip (就是加一个.zip的后缀)
1.右键用压缩工具打开文件,用记事本打开_rels文件夹里的.rels文件
2.在最后一句 </Relationships> 前插入以下代码:
<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文件,把以下代码复制进去后保存
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<qat>
<sharedControls>
<button idMso="FileSave" />
<button idMso="PrintPreviewAndPrint" />
</sharedControls>
</qat>
<tabs>
<tab id="rxtabCustom" label="我的自定义选项卡" insertBeforeMso="TabHome">
<group id="mygroupA" label="测试">
<button id="c1" image="A" label="测试宏1" size="large" onAction="测试1"/>
<button id="c2" image="B" label="测试宏2" onAction="测试2"/>
</group>
<group idMso="GroupViewShowHide" label="显示"></group>
<group id="mygroupB" label="常用工具">
<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开发">
<control idMso="VisualBasic" label="VBE编辑器" />
<control idMso="MacroRecord" label="录制新宏" />
<control idMso="PlayMacro" label="查看宏" />
</group>
</tab>
</tabs>
</ribbon>
</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,方法参照第三步,然后把以下代码复制进去:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="A" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/001.png"/>
<Relationship Id="B" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/002.png"/>
</Relationships>
第五步:再用压缩工具打开 自定义.xlsm.zip
把做好的customUI文件夹拖到压缩文件里,保存
然后再把 自定义.xlsm.zip 改名成: 自定义.xlsm
打开文件,可能有2次提示,每次都点确定
文件打开之后,你会看到最顶端你的文件名会显示 自定义.xlsm[修复的],出现这种情况,你只需把文件另存为启用宏的工作簿就正常了!!!
再打开文件即可看到效果
基本功能已经完成,这个只能让你现在做的这个文件的功能区改变,如果想要让你的电脑整个应用这个设置请继续往下看:
第六步:把你做好的文件做成加载宏,并做一个安装和卸载的功能:
1.新建一个文件夹,取名为excel2013功能区安装与卸载
2.把 自定义.xlsm 工作簿另存为加载宏工作簿,保存类型选择“Excel 加载宏(*.xlam)",保存在 excel2013功能区安装与卸载 文件夹里,文件名不变
3.新建一个启用宏的工作簿(*.xlsm),文件名为“2013安装””,在thisworkbook模块里放入以下代码
Private Sub Workbook_Open()
AddIns.Add Filename:=ThisWorkbook.Path & "\自定义.xlam"
Application.AddIns("自定义").Installed = 1
End Sub
然后保存,关闭工作簿
4.依照第3步,建一个 2013卸载 启用宏的工作簿,在thisworkbook模块里放入以下代码
Private Sub Workbook_Open()
On Error Resume Next
AddIns("自定义").Installed = False
End Sub
然后保存,关闭工作簿
OK,整个制作过程完毕