Excel 2010 VBA 入门 139 创建工作簿级的自定义选项卡
目录
题
码
Excel工作簿的实质
XML简介
customUI.xml
常用的功能区控件及通用属性
tabs控件和tab控件
group控件
命令控件
内置控件的ID
customUI.xml中控件和属性的命名规则
使用customUIEditor工具制作选项卡
题
自定义选项卡,使得该设置仅对某个工作簿有效。
码
创建自定义选项卡的XML文件,将其添加进Excel工作簿文件中。
步骤1 创建一个文件夹,将其命名为“customUI”。
步骤2 打开“记事本”程序,在其中输入以下内容:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"><ribbon><tabs><tab id="customTab" label="自定义选项卡" insertAfterMso="TabHome"><group idMso="GroupCells" /><group idMso="GroupFont" /><group id="customGroup" label="自定义工具"><button id="customButton1" label="加粗" size="normal" imageMso="Bold" /><button id="customButton2" label="斜体" size="normal" imageMso="Italic" /><button id="custombutton3" label="下划线" size="normal" imageMso="Underline" /></group></tab></tabs></ribbon>
</customUI>
步骤3 按【Ctrl+S】组合键打开“另存为”对话框,将文件保存在之前创建的“customUI”文件夹中,选择保存类型为“所有文件(*.*)”,编码选择“UTF-8”,将文件名更改为“customUI.xml”,单击“保存”按钮保存文件,然后关闭该文件,如图所示。
步骤4 在资源管理器中选择“Excel”工作簿。按【F2】键,重命名文件名,在该文件名之后加入“.zip”,在出现的警告信息中单击“是”按钮,完成文件的改名。
步骤5 双击步骤4中更改文件名的Excel工作簿,打开该压缩包。在“_rels”文件夹下找到“.rels”文件,然后将该文件复制到压缩包之外。
步骤6 创建“customUI.xml”文件与工作簿的联系。打开“记事本”程序,使用该程序打开步骤5中解压出来的“.rels”文件。在文件结尾处最后一个“</Relationships>”之前添加以下代码。然后保存该文件,并关闭,如图所示。
<?xml version="1.0" encoding="UTF-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/><Relationship Type="http://schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="/customUI/customUI.xml" Id="customUIRelID" />
</Relationships>
步骤7 将文件合并入Excel工作簿压缩包中。在压缩包中删除原来的“.rels”文件,并将步骤6中修改的“.rels”文件复制到压缩包的“_rels”文件夹下。将步骤1中创建的“customUI”文件夹复制到压缩包的根目录中,如图所示。
步骤8 选中压缩包文件,按【F2】键修改文件名,去掉步骤4中结尾处加入的“.zip”。
步骤9 双击打开该文件,可以发现在该工作簿中已经创建了“自定义选项卡”,如图所示。
Excel工作簿的实质
Excel2007以上版本的工作簿是一个OpenXML格式的文件,其实质是一个ZIP压缩文件。当使用解压缩软件对其解压后,可以得到若干个文件夹和文件,如图所示。
文件夹customUI用于存放自定义功能区的相关文件。当需要创建工作簿级的自定义选项卡时,将所需文件存放于该文件夹下。
文件夹docProps用于存放文档属性相关的文件。
文件夹xl用于存放工作簿的数据,其下一般包含theme、worksheets、_rels三个文件夹,用于存放主题、工作表以及关联文件。
文件夹_rels用于存放关联文件,该文件是将上述文件夹的各个信息关联在一起,从而组成一个工作簿。
在以上所有的文件夹下(包括根目录下)的文件,其大部分都为XML格式的文件。换言之,Excel工作簿实质是若干个XML文件的ZIP打包文件。
XML简介
XML的全称是ExtensibleMarkupLanguage(可扩展标记语言),以该语言编写的XML文件是目前主流的用以传输和存储数据的文件。
XML是一个标记性的语言,其基本语法和HTML非常相似,其基本语句的语法结构为
<tagName[[property1="value1"] property2="value2"]…>[elementValue]</tagName>
以上语句描述了一个元素的值为elementValue,其元素的名称为tagName,属性property1的值为value1,属性property2的值为value2。其中属性的值无论其数据类型是什么,都必须写在一对半角的双引号之间。
当编写XML语句时,以成对的尖括号(<>)表示元素。正确的XML语句应包括元素的开始标志(<tagName>)和元素的结束标志(</tagName>)。当所需描述的元素值省略时,可以将元素的开始和结束写在同一对尖括号中,并且结束标志的元素名称也可以省略,如:
<tagName[[property1="value1"]property2="value2"]…/>
在XML语句中,可以将语句分多行编写,其中无须任何转行符号。但是XML是区分大小写的,如:tagName和Tagname的意义是不同的。
XML语句是可以嵌套的,如:
<root><child><subchild>…</subchild></child>
</root>
但在使用嵌套结构时必须注意其元素的逻辑顺序。在某个元素内所定义的子元素必须在该元素关闭标志之前关闭。如以下语句是不符合要求的:
<root><child><subchild></child></subchild>
</root>
由于XML语句的嵌套,其各个元素所形成的结构类似于一棵树,在最外层的元素为该树形结构的根(根元素),内层的元素为树形结构的枝干和叶子,如图所示。
所有的XML文档内必须有且仅有一个根元素。
customUI.xml
customUI.xml文件是Excel工作簿中用来存放自定义功能区的信息的文件,其格式一般为
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"><ribbon><tabs><tab……><group……>……</group></tab></tabs></ribbon>
</customUI>
其中,cutomUI元素为根元素,其属性xmlns表示其控件的命名空间,也可以理解为控件声明的来源。一般采用微软提供的命名空间(如以上代码)。
其余部分则为功能区的定义。其中ribbon元素表示整个功能区。该元素有一个属性为startFromScratch,该属性可以接受一个逻辑值,当其为true时,表示隐藏内置的选项卡,反之为正常显示内置选项卡。
一般而言,只需修改tabs元素之间的代码,即可在自定义功能区中添加选项卡、组和控件。对于所有的功能区控件,开发者可以选择添加内置的控件,也可以添加自定义的控件。当需要在功能区中添加控件时,只需将表示该元素的XML语句插入相应的位置即可。
常用的功能区控件及通用属性
控件类型 |
XML标记 |
说 明 |
选项卡 |
Tab |
用以表示各个选项卡。 |
组 |
group |
用以表示各个控件组 |
标签 |
labelCantrol |
用以显示文字,可以提供提示功能,但是无交互功能 |
按钮 |
button |
当单击时可以触发某个程序的运行 |
切换按钮 |
toggleButton |
可以在按下和弹起两个状态切换的按钮 |
编辑框 |
editBox |
相当于文本框,可以接受用户的文字输入 |
复选框 |
checkBox |
提供了选中和非选中两种状态 |
下拉框 |
dropDown |
提供了一个下拉列表供选择 |
组合框 |
comboBox |
编辑框和下拉框的结合,可以输入文字或者从下拉列表中选择 |
各个控件拥有不同的属性,但大部分常用属性是通用的,主要有以下常用属性。
id、idMso、idQ:这三个属性用来描述每个控件唯一的ID。其中,id为添加的自定义控件的id号,idMso用于表示内置控件,idQ用于命名空间中的控件。这三个属性只能同时使用其中之一。
label、screentip、supertip、showLabel、size、visible:这6个属性用以设置控件的外观。其中,label表示控件的标题或显示的文本;screentip和supertip则设置鼠标悬浮在控件之上所显示的提示文本;showLabel用于设置控件是否显示标签,可以为true或者false;size用于设置控件的大小,可以为normal(占用一行)或者large(占用三行);visible用于设置控件是否可见,可以为true或者false。
image、imageMso、showImage:这三个属性用以设置控件的图像。image属性用以设置所需显示的图像名称;imageMso用以引用内置的图像;showImage用于设置图像是否显示,可以为true或者false。
enabled:用于设置控件是否可用,可以为true或者false。
keytip:用于设置控件访问的快捷键,即当用户按下【Alt】键所显示的提示热键,可以为1~3位字母。
tag:用于设置控件的标签。多个控件可以享用共同的标签。
tabs控件和tab控件
控件tabs表示所有选项卡的集合,在其中可以定义每个单独的选项卡tab控件。tab用于描述选项卡。当需要添加选项卡时,则使用id属性指定新添加的选项卡的ID;当需要调用内置选项卡时,则使用idMso属性指定内置的选项卡。新添加的选项卡位于所有内置选项卡的最后,当需要调整选项卡的位置时,可以使用insertBeforeMso或者insertAfterMso属性来指定选项卡插入在某个内置选项卡之前或者之后。如以下语句表示在“开始”选项卡之前插入一个选项卡:
<tab id="tbDemo" label="Demo" insertBeforeMso="TabHome">
常用的内置选项卡见表
选项卡名称 |
ldM so属性 |
“开始”选项卡 |
TabHome |
“插入"选项卡 |
TabInsert |
“页面布局”选项卡 |
TabPageLayoutExcel |
“公式”选项卡 |
TabFormulas |
“数据”选项卡 |
TabData |
“审核”选项卡 |
rabReview |
“视图”选项卡 |
TabView |
“开发工具”选项卡 |
TabDeveloper |
“加载项”选项卡 |
TabAddIns |
group控件
group控件用于描述选项卡中的各个组。所有的命令控件都需要添加在group控件中。因而group控件是自定义功能区中必不可少的一个控件。
命令控件
常用的命令控件有标签(labelControl)、按钮(button)、切换按钮(toggleButton)、编辑框(editBox)、复选框(checkBox)、下拉框(dropDown)、组合框(comboBox)等。一般只需要一行清楚地描述其属性的XML语句,即可添加一个控件。如以下语句表示添加一个文字显示为“按钮1”、ID为“button1”的按钮控件。
<button id="Button1" label="按钮1" size="large"/>
内置控件的ID
当需要获取内置控件ID时,可以在Excel选项的“自定义选项卡”中找到所需的内置控件,当将鼠标停在该控件上方时,则会显示一个提示框,从中可以获取控件的idMso,如图所示。
在微软的官方网站上公布了所有的内置控件,用户可以从以下网址进行免费下载:
http://www.microsoft.com/en-us/download/details.aspx?id=3582(Office2007)
http://www.microsoft.com/en-us/download/details.aspx?id=6627(Office2010)
customUI.xml中控件和属性的命名规则
由于XML是区分大小写的一种语言,一旦大小写弄错,将导致程序无法正确运行。在Excel中,各个内置的控件和属性实际是有规律可循的。这些控件和属性事实上是由一个或多个英文单词组成的,其中第一个单词的所有字母为小写字母,之后的英文单词中的首字母是大写。如:button、labelControl、startFromScratch。该命名方法称为CamelCase命名法。
使用customUIEditor工具制作选项卡
微软公司的用户体验小组的TrangLuu编写了一个非常强大的自定义功能区的工具,名为customUIEditor。使用该工具可以非常方便地帮助用户自定义功能区,并实现添加图片等功能。该工具可以从以下网址免费下载并使用。
https://bettersolutions.com/vba/ribbon/custom-ui-editor.htm
该工具目前为英文版,但是使用非常简单,它需要.Net3.5支持。使用该工具制作自定义选项卡的步骤如下。
(1)打开该工具软件。
(2)单击左上角“Open”图标,选择Excel工作簿,并单击“打开”按钮,如图所示。
(3)选择“Insert”→“Office 2010 Custom UI Part”,即可插入一个“customUI14.xml”文件,如图所示。
(4)将自定义功能区代码复制到该文件中,如图所示。
(5)单击“Validate”按钮可以验证代码的正确性,如图所示。
(6)最后单击“save”按钮进行保存即可,如图所示。
该工具还可以方便地添加自定义功能区控件的图片,生成回调代码签名等。感兴趣的开发者可以自行尝试。
注:此版本的customUIEdit好像不支持中文。
https://club.excelhome.net/thread-948458-1-1.html
这里有个支持中文的,我已经测试过。
Excel 2010 VBA 入门 139 创建工作簿级的自定义选项卡相关推荐
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
- Excel 2010 VBA 入门 007 创建和使用数字证书签名
目录 操作方法 1.创建数字证书 步骤1 单击Windows中的"开始"按钮,在"所有程序"中找到Microsoft Office,在子文件夹"Mi ...
- Excel 2010 VBA 入门 066 读取其他工作簿的数据
目录 示例 实现代码 打开关闭的工作簿 示例 如图所示,在"数据库.xlsx"工作簿中存有"销售数据",在相同目录下的工作簿 希望能够将该工作簿中该工作表中的 ...
- Excel 2010 VBA 入门 125 创建动态智能匹配的下拉列表
目录 题 码 TextBox控件和ListBox控件 ListBox控件的ListFiIIRange属性和List属性 ListBox控件的多列显示 ListBox控件的值 模糊查询下拉列表 控件的选 ...
- Excel 2010 VBA 入门 119 创建对话框的帮助文档
目录 例 码 步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 步骤7 步骤8 步骤9 步骤10 步骤11 步骤12 步骤13 步骤14 步骤15 CHM文件及HTML Help Workshop ...
- Excel 2010 VBA 入门 105 将工作表数据批量导出为图片
目录 示例 代码 Copy. Cut和Paste方法 图表对象(Chart)的Export方法 利用PPT导出图片 示例 为防止数据的更改或者盗用,将所选的数据区域导出为图片进行展示. 代码 在Exc ...
- Excel 2010 VBA 入门 006 设置宏安全性
目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. 步骤2在"信任中心"的"宏设置"选项中 ...
- Excel 2010 VBA 入门 140 在功能区添加按钮并运行VBA程序
目录 题 码 回调(CallBack) IRibbonControl对象 题 如图所示,该表为员工档案.为了避免该表的数据被修改,该表已经被保护.如何在功能区添加一个按钮,当单击该按钮后可以将该表的数 ...
- Excel 2010 VBA 入门 067 导入多个工作簿中的工作表
目录 示例 实现代码 导入多个工作簿中的工作表 Application. ScreenUpdating属性 示例 如图所示,在同一个目录下有多个工作表名称相同的工资汇总月报.现希望通过VBA建立该多个 ...
最新文章
- 使用await / async时,HttpClient.GetAsync(...)永远不会返回
- html语言中div怎么起名,css如何命名?
- 1039. 到底买不买(20)
- 人口预测和阻尼-增长模型_使用分类模型预测利率-第1部分
- 前端性能优化 Web前端应该从哪些方面来优化网站?
- PostgreSQL学习手册(数据表)
- excelexportentity中设置null不显示的方法_一般人不知道的线程间数据交换Exchanger
- Oracle定时器(Job)各时间段写法汇总
- 不讲武德,只用标签名就能做文本分类
- vim查找关键字_vim常用命令及操作
- selenium python文档_selenium+python实现百度文库word文档抓取
- 这些C4D创意卡通色彩场景,简直酷到爆炸!
- hpux 11.11 连接HDS 存储,采用HDLM管理带来的麻烦,需重启。
- echarts line
- 递归总结 By greenhand
- 题库:queryset数据类型的特性
- 别踩白块儿游戏源代码分析和下载(二)
- python的浮点数占字节_Python二进制文件读取并转换为浮点数详解
- Parallels Desktop 17 for Mac(pd虚拟机)支持Intel 和 Apple M1
- java 置换_Java中的置换和组合