using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
namespace ExcelVSTO
{
public partial class ThisAddIn
{
private Office.CommandBarButton myCommandBarButton;
private void ThisAddIn_Startup(object sender, EventArgs e)
{
// 获取应用程序对象
Excel.Application application = this.Application;
// 获取主菜单栏对象
Office.CommandBar mainMenuBar = application.CommandBars["Worksheet Menu Bar"];
// 创建一个弹出菜单
Office.CommandBarPopup myPopup = (Office.CommandBarPopup)mainMenuBar.Controls.Add(
Type: Office.MsoControlType.msoControlPopup,
Before: 1, // 可根据需要调整菜单项的位置
Temporary: true // 设置为临时菜单,不保存到自定义的工作簿模板中
);
myPopup.Caption = "自定义菜单
(&Z)
"; // 菜单名称
(&Z) 快捷键
// 创建一个菜单项
myCommandBarButton = (Office.CommandBarButton)myPopup.Controls.Add(
Type: Office.MsoControlType.msoControlButton,
Before: 1 // 可根据需要调整菜单项的位置
);
myCommandBarButton.Caption = "自定义命令"; // 菜单项名称
myCommandBarButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(myCommandBarButton_Click);
}
private void myCommandBarButton_Click(Office.CommandBarButton cmdBarBtn, ref bool cancel)
{
// 点击菜单项时执行的逻辑代码
MessageBox.Show("自定义命令被点击了!");
}
private void ThisAddIn_Shutdown(object sender, EventArgs e)
{
// 清理资源
myCommandBarButton.Click -= new Office._CommandBarButtonEvents_ClickEventHandler(myCommandBarButton_Click);
myCommandBarButton = null;
}
}
}
myPopup.Caption = "自定义菜单
(&Z)
"; // 直接加上红色的快捷键就出来了
myCommandBarButton.Caption = "自定义命令";Temporary: true // 设置为临时菜单,不保存到自定义的工作簿模板中。myPopup.Caption = "自定义菜单";Before: 1, // 可根据需要调整菜单项的位置。Before: 1 // 可根据需要调整菜单项的位置。MessageBox.Show("自定义命令被点击了!// 点击菜单项时执行的逻辑代码。// 获取应用程序对象。// 获取主菜单栏对象。// 创建一个弹出菜单。// 创建一个菜单项。
在上一篇文章中,我介绍了Word的对象模型和一些基本开发技巧。为了更好的介绍Word插件开发,我为本文制作了一个Word书签的增强版,具体功能是让用户在Word中选择一段文本,为它添加书签并其标志为高亮,同时用户可以为这段书签写注释,以后当用户点击这个书签时,我就会显示注释。以下是我录制的视频介绍:
这个插件将包括以下几个技术点:
添加
右键
菜单
添加
右键
菜单
、控制
右键
菜单
显
Excel
.Application app;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
app = Globals.ThisAddIn.Application;
Office.CommandBars bars = app.CommandBars;
using System.Runtime.InteropServices;
using System.Text;
using Office =
Microsoft
.Office.Core;
// TODO:.
1. 在
VSTO
项目中添加一个 Ribbon 控件。
2. 在 Ribbon 控件中添加一个 Context
Menu
控件。
3. 在 Context
Menu
控件中添加一个 Button 控件,并设置其 Label 属性为需要显示的
菜单
项名称。
4. 在 Button 控件的 Click 事件中编写需要执行的代码。
通过这种方式,可以在
右键
菜单
中添加自定义的
菜单
项,并在点击
菜单
项时执行相应的代码。
System.InvalidCastException:“无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类