自定义界面

XML代码:界面显示;XML语言编写

回调函数:功能操作;VBA语言编写;

创建并安装加载宏:C:\Users\wwu\AppData\Roaming\Microsoft\AddIns

excel2003:菜单栏Menu+工具栏Tool+快捷菜单PopUpMenu.

excel2007:选项卡+功能区

创建自定义菜单

包括:1 获取当前活动菜单栏;2 在活动菜单栏中添加一个下拉菜单;3 为下拉菜单添加菜单项;4 设置各菜单项的名称、调用的子过程等参数。

Sub Additems()
Dim CommandBar1 As CommandBar   '声明变量,保存自定义菜单
Dim myFirstMenu As Object
Dim myFirstMenuitem As Object
Set CommandBar1=ActiveSheet.CommandBars.ActiveMenuBar    '获取活动菜单
Set myFirstMenu=CommandBar1.Controls.Add Type=msoControlPopup,_ '在活动菜单后面添加一个下拉菜单
Temporary=True
myFirstMenu.Caption="我的菜单"
Set myFirstMenuitem=myFirstMenu.Controls.Add(Type:=msoControlButton,ID:=1
myFirstMenuitemCaption="item1"
myFirstMenuitem.Style=msoButtonCaption    '设置菜单项
myFirstMenuitem.OnAction="method1"    '设置调用的子过程
Set myFirstMenuitem=myFirstMenu.Controls.Add(Type:=msoControlButton,ID:=2
myFirstMenuitem.Caption="item2"
myFirstMenuitem.Style=msoButtonCaption    '设置菜单项
myFirstMenuitem.OnAction="method2"    '设置调用的子过程
Set myFirstMenuitem=myFirstMenu.Controls.Add(Type:=msoControlButton,ID:=3
myFirstMenuitem.Caption="item3"
myFirstMenuitem.Style=msoButtonCaption    '设置菜单项
myFirstMenuitem.OnAction="method3"    '设置调用的子过程
end Sub

每个菜单项的子过程的代码

Sub method()
MsgBox "you selected item1"
end Sub
Sub method()
MsgBox "you selected item2"
end Sub
Sub method()
MsgBox "you selected item2"
end Sub

创建快捷菜单

不同的区域右击,会弹出不同的快捷菜单项。下面介绍cell快捷菜单中添加菜单项

Sub 创建快捷菜单()
Dim NewItem As CommandBarControl
Set newItem=CommandBars("Cell").Controls.Add
With newItem
.Caption="new item"
.OnAction="MethodForCell"
.BeginGroup=true
End With

禁用快捷菜单项

CommandBars("Column").Controls("Hide").Enabled.False

CommandBars("Row".Controls("Hide").Enabled=False

禁用快捷菜单

CommandBars("Cell").Enabled=False

自定义功能区 custom ribbon UI

用XML编写代码定制界面,用VBA代码编写完成功能区控件的相应功能;

excel2007的功能区(ribbonX)的代码是XML代码;XML是描述数据的一各方式,也可包含数据;

a 在功能区添加一个新的选项卡,b 在该选项卡中放置两个内置的组

1 创建自定义UI文件

先创建customUI的文件夹,然后在内创建customUI.xml的文本文件;

<customUI xmlns="http:schemAs.microsoft.com/office/2006/01/customUI">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabCustom"
label="my Tab"
insertBeforeMso="TabHome">
<group idMso="GroupFont">
</group>
<group idMso="GroupZoom">
</group>
</tab>
</tabs>
</ribbon>
</customUI>

2 添加到XML文件中

2.1 将某一excel文件的扩展名改为.zip,然后打开;

2.2 将customUI文件夹拖入;

2.3 拖出_rels文件夹,并编辑其.rels文件,在</relationships>之前插入以下代码:

<Relationship id="customUIRelID"

Type="http://schemAs.microsoft.com/office/2006/relationships/ui/extensibility"

Target="customUI/customUI.xml"/>

2.4 删除压缩文件夹中的rels文件夹,将新编辑好的rels文件拖入;

2.5 然后将某excel文件的扩展名改回;

使用Microsoft Office 2007 Custom UI Editor修改UI

一个用来编辑OpenXML文件的小型工具;需要先安装Microsoft.Net Framework 2.0

office 2007新文件格式是office 2007应用程序使用.zip压缩技术来存储文档。在打开文件时,这种格式可以自动解压缩,而在保存文件时,这种格式又可自动压缩,这些操作在后台进行,用用户是透明的。所有OpenXML文件都是压缩容器,按照RibbonX代码读取的顺序放置在压缩容器内。

安装后,打开目标excel文件,即可修改;