微软功能区按钮从加载项执行功能

本文关键字:执行 功能 加载项 功能区 按钮 微软 | 更新日期: 2023-09-27 18:04:26

好吧,我已经在谷歌上搜索了很多关于这个话题的信息,但我几乎一无所获。也许我没有为我想要完成的事情寻找正确的术语。

我的问题是,我在MS Excel插件中编写了一个函数,我按照微软的说明作为起点,但他们的教程让代码在每次用户保存文档时执行。我的目标是让我设计的功能区上的按钮执行此功能,而不是保存按钮。

这是我跟随微软的文章开始:https://msdn.microsoft.com/en-us/library/cc668205.aspx

我也在这里发现了这个问题,但它没有足够的细节让我弄清楚如何为自己实现解决方案:如何将ribbon按钮连接到Excel外接程序中定义的函数?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        void FormatTime(Microsoft.Office.Interop.Excel.Workbook WB, bool SaveAsUi, ref bool Cancel)
        {
            /////MY FUNCTION BODY HERE//////
        }
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
        }
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }
        #region VSTO generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        #endregion
    }
}

事先感谢您的协助。

微软功能区按钮从加载项执行功能

VSTO提供了两种创建自定义UI的方法:

  1. 功能区设计器-参见演练:使用功能区设计器创建自定义选项卡。

  2. 一个原始的XML标记-演练:使用Ribbon XML创建自定义选项卡。

在这两种情况下,您都可以使用Globals.ThisAddin属性访问外接程序属性和方法,该属性返回外接程序类的实例(如上面列出的代码所示)。

通常您可以使用Globals.ThisAddIn.Application访问应用程序级和文档级UI。我希望这个链接能有所帮助。下面是一个向工作表添加按钮的示例,如下所示:

Globals.Factory.GetVstoObject(
    Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1])
        .Controls.AddControl(button, selection, buttonName);

看起来像