目录

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 创建工作簿级的自定义选项卡相关推荐

  1. Excel 2010 VBA 入门 034 创建图片批注

    目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...

  2. Excel 2010 VBA 入门 007 创建和使用数字证书签名

    目录 操作方法 1.创建数字证书 步骤1  单击Windows中的"开始"按钮,在"所有程序"中找到Microsoft Office,在子文件夹"Mi ...

  3. Excel 2010 VBA 入门 066 读取其他工作簿的数据

    目录 示例 实现代码 打开关闭的工作簿 示例 如图所示,在"数据库.xlsx"工作簿中存有"销售数据",在相同目录下的工作簿  希望能够将该工作簿中该工作表中的 ...

  4. Excel 2010 VBA 入门 125 创建动态智能匹配的下拉列表

    目录 题 码 TextBox控件和ListBox控件 ListBox控件的ListFiIIRange属性和List属性 ListBox控件的多列显示 ListBox控件的值 模糊查询下拉列表 控件的选 ...

  5. Excel 2010 VBA 入门 119 创建对话框的帮助文档

    目录 例 码 步骤1 ​ 步骤2 步骤3 步骤4 步骤5 步骤6 步骤7 步骤8 步骤9 步骤10 步骤11 步骤12 步骤13 步骤14 步骤15 CHM文件及HTML Help Workshop ...

  6. Excel 2010 VBA 入门 105 将工作表数据批量导出为图片

    目录 示例 代码 Copy. Cut和Paste方法 图表对象(Chart)的Export方法 利用PPT导出图片 示例 为防止数据的更改或者盗用,将所选的数据区域导出为图片进行展示. 代码 在Exc ...

  7. Excel 2010 VBA 入门 006 设置宏安全性

    目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. ​ 步骤2在"信任中心"的"宏设置"选项中 ...

  8. Excel 2010 VBA 入门 140 在功能区添加按钮并运行VBA程序

    目录 题 码 回调(CallBack) IRibbonControl对象 题 如图所示,该表为员工档案.为了避免该表的数据被修改,该表已经被保护.如何在功能区添加一个按钮,当单击该按钮后可以将该表的数 ...

  9. Excel 2010 VBA 入门 067 导入多个工作簿中的工作表

    目录 示例 实现代码 导入多个工作簿中的工作表 Application. ScreenUpdating属性 示例 如图所示,在同一个目录下有多个工作表名称相同的工资汇总月报.现希望通过VBA建立该多个 ...

最新文章

  1. 使用await / async时,HttpClient.GetAsync(...)永远不会返回
  2. html语言中div怎么起名,css如何命名?
  3. 1039. 到底买不买(20)
  4. 人口预测和阻尼-增长模型_使用分类模型预测利率-第1部分
  5. 前端性能优化 Web前端应该从哪些方面来优化网站?
  6. PostgreSQL学习手册(数据表)
  7. excelexportentity中设置null不显示的方法_一般人不知道的线程间数据交换Exchanger
  8. Oracle定时器(Job)各时间段写法汇总
  9. 不讲武德,只用标签名就能做文本分类
  10. vim查找关键字_vim常用命令及操作
  11. selenium python文档_selenium+python实现百度文库word文档抓取
  12. 这些C4D创意卡通色彩场景,简直酷到爆炸!
  13. hpux 11.11 连接HDS 存储,采用HDLM管理带来的麻烦,需重启。
  14. echarts line
  15. 递归总结 By greenhand
  16. 题库:queryset数据类型的特性
  17. 别踩白块儿游戏源代码分析和下载(二)
  18. python的浮点数占字节_Python二进制文件读取并转换为浮点数详解
  19. Parallels Desktop 17 for Mac(pd虚拟机)支持Intel 和 Apple M1
  20. java 置换_Java中的置换和组合

热门文章

  1. TS文件下载器(按照M3U8列表 批量下载)
  2. 基于SPI协议的Flash驱动控制-扇区擦除
  3. 使用opencv打开相机——python
  4. java语言程序设计与数据结构基础篇,2万字20个项目实例
  5. 里氏代换原则C#详解
  6. c汇编语言例题,第三章 汇编语言程序设计例题习题
  7. ADF 单位根检验 Dickey-Fuller 迪基-福勒检验
  8. 英语app二维码及图标
  9. python计算圆周率_python模拟蒙特·卡罗法计算圆周率
  10. dba怎么报考_深圳dba双证报考时间