我们知道在Office2007客户端的几个产品中,Word,Excel,PowerPoint的界面可以说是变化最大的:我们之前熟悉的菜单和工具栏不见了,取而代之的是"功能区"(英文为:Ribbon)
虽然,一开始总是觉得使用起来很奇怪,一些快捷的键盘操作都找不到了(Ribbon非常适合习惯用鼠标的用户,但喜欢用键盘的朋友就有些郁闷了)可还是要尊重产品组的研究成果,基于大量的统计数据可以得到如下结论:Ribbon使用户的使用速度得到了提高。
OK,言归正传,如果开发者希望在Ribbon中增加自己需要的选项卡呢?比如一个自动填表的按钮啊什么的。要怎么做呢?
Ribbon的自定义开发分为两种:
这篇文章,先来介绍如何开发第一种选项卡。
以Word2007为例子:
1、首先,新建一个Word2007文档,在里面随便输入一些文字,并保存为"CustomRibbon.docx"。
2、关闭此文档,并将此文件名改为CustomRibbon.zip(新的Office文件格式均符合OpenXML的工业标准,其实就是一个zip包)
3、打开此zip包,创建一个新的文件夹叫CustomUI
4、在CustomUI文件夹里添加一个xml文件:LitwareRibbon.xml,这个文件用来说明新添加的选项卡的属性以及包括哪些控件。
此文件内容为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="LitwareTab" label="Litware" visible="1">
<group id="LitwareGroup" label="Litware Tools" visible="1">
<button id="buttonGenerateNumber" label="Generate Number" onAction="GenerateNumber"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
可以看出来,这个XML定义了一个叫"Litware"的选项卡,其中有一个按钮叫Generate Number,点击时会触发一个"GenerateNumber"函数。
5、在[Content_Types].xml文件中的</Types>前添加一个element:
<Override PartName="/CustomUI/LitwareRibbon.xml" ContentType="application/xml"/>
6、在_rels文件夹下的.rels中的</RelationShips>前添加一个element:
<Relationship Id="rId8" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="CustomUI/LitwareRibbon.xml"/>
7、将这几个文件夹和文件重新打成一个zip包:CustomRibbon.zip
8、讲此zip包文件名改为CustomRibbon.docx
9、打开这个word文档,就可以看到新添加的这个选项卡了:
10、问题:如果需要在按下那个"Generate Number"按钮后执行一些操作怎么办?
答案:用VBA。
在Word2007中,默认的VBA编辑是关闭的,所以我们点击左上角的Office按钮,再选择其中的"Word选项",把"在功能区显示开发工具选项卡"前面的复选框挑上勾,确定后,就可以在Word的功能区中看到"开发工具"的选项卡。
11、将文档另存为"启用宏的Word文档",这时,此word文档的后缀会由docx变为docm。在Office2007中,后缀是x的文档将不会启用宏,而保护宏代码的文档都以m结尾。
12、点击"开发工具"选项卡,选择"Visual Basic"按钮,为此文档增加如下代码:
Public Sub GenerateNumber(control As Variant)
保存并关闭。
13、点击"Litware"选项卡,再点击其中的"Generate Number"按钮,刚刚写好的这段VBA代码就开始执行了。
看来,新格式微软并没有抛弃VBA,:)
联系客服