演练:在Excel中建立自定义菜单项
Brian A. Randell
MCW Technologies, LLC
September 2003
Applies to:
Microsoft® Visual Studio® Tools for the Microsoft office System
Microsoft office Excel 2003
Microsoft Visual Studio .NET 2003
概述:office CommandBar对象提供了增加菜单项和工具条按钮代码的途径。在这篇演练中,你将建立自定义菜单项目下的菜单条,并且增加代码来响应office菜单。
内容:
介绍
建立菜单和工具条项目是微软office的一个核心特点,虽然这次试验是示范在微软office Excel 2003中使用这些项目,但是这些操作在office word中是类似的。(不同之处在于在word中菜单名是Menu Bar,而在Excel中叫Worksheet Menu Bar。)你将在Excel主菜单中建立菜单项。然后,你增加此菜单项。最后,你增加Click事件代码来执行自定义代码。
提示:office菜单和工具条的对象模块定义在office.dll中,当你给微软office System项目建立了一个新的Visual Studio Tools时,微软Visual Studio® .NET自动包含到此模块的引用。
先决条件
要完成此演练,下列软件和组件必须安装:
• Microsoft Visual Studio .NET 2003 or Microsoft Visual Basic® .NET Standard 2003
• Microsoft Visual Studio Tools for the Microsoft office System
• Microsoft office Professional Edition 2003
提示:假如你是Visual Basic .Net编程者,你需要设置Option Strict为On(或者你在每一个模块中增加Option Strict声明)。虽然这不是必须的,但是这可以保证你不会执行不安全的类型转换。在以后的时间里,利用此选项的好处将远远大于增加代码的困难。
开始
你将通过建立一个新的Visual Studio .NET的Excel项目来开始。
建立项目
使用微软office System的Visual Studio Tool建立一个新的Excel工作簿项目(在Visual Basic .NET或是C#中)。
建立一个Excel工作簿项目
1. 开始Visual Studio .NET,在文件菜单上,指向新建,点击项目。
2. 在项目类型面板上,扩展微软office System项目,接着选择Visual Basic 项目或Visual c#项目。
3. 在模板面板中选择Excel工作簿。
4. 起名为ExcelCommandBars,接着存储在当地硬盘。
5. 在微软office项目向导中接受缺省值,点击完成。
Visual Studio .NET为你在代码编辑器中打开ThisWorkbook.vb或是ThisWorkboo.cs文件。
建立菜单栏项目
在Excel主菜单条上建立一个菜单栏项目需要你使用Add方法增加一个CommandBarControl。
在Excel中建立菜单栏项目
1. 在已存变量ThisApplication和ThisWorkbook下面增加下列变量:
' Visual Basic
Private MainMenuBar As office.CommandBar
Private MenuBarItem As office.CommandBarControl
Private WithEvents MenuItem As office.CommandBarButton // C#
private office.CommandBar MainMenuBar = null;
private office.CommandBarControl MenuBarItem = null; private office.CommandBarButton MenuItem = null;
2. 在officeCodeBehing类中增加下列程序(通过项目模板建立),这段程序初始化了先前声明的MainMenuBar和MenuItemBar对象。
' Visual Basic Private
Sub InitMenuBarItems(ByVal Caption As String)
Try MainMenuBar = ThisApplication.CommandBars( _ "Worksheet Menu Bar")
MenuBarItem = MainMenuBar.Controls.Add( _ office.MsoControlType.msoControlPopup, Temporary:=True) MenuBarItem.Caption = Caption Catch ex As Exception MessageBox.Show(ex.Message, _
ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
// C#
private void InitMenuBarItems(string Caption)
{ try { MainMenuBar = ThisApplication.CommandBars["Worksheet Menu Bar"]; MenuBarItem = MainMenuBar.Controls.Add( office.MsoControlType.msoControlPopup, Type.Missing, Type.Missing, Type.Missing, true); MenuBarItem.Caption = Caption; }
catch (Exception ex) { MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
3. 增加下列代码到已存在的ThisWorkbook_Open程序,这段代码调用你刚才建立的InitMenuBarItems程序。
' Visual Basic
InitMenuBarItems("&Custom Code")
// C#
InitMenuBarItems("&Custom Code");
4. 选择文件菜单上的保存所有文件来保存整个方案。
5. 按F5运行项目,装入Excel和你的工作簿。
6. 在Excel中,查看菜单栏项目标签写着Custom Code的菜单显示在帮助菜单右边。如图一所示:
图一:有着自定