好的,所以我已经做了很多谷歌搜索,试图找到有关这个主题的信息,而且我几乎空手而归。也许我没有为我想要完成的事情寻找正确的术语。
我的问题是我在MS Excel加载项中编写了一个函数,我按照Microsoft的指示作为起点,但是他们的教程每次用户保存文档时都会执行代码。我的目标是在我设计的功能区上设置一个按钮,而不是保存按钮。
这是我开始使用的微软文章:https://msdn.microsoft.com/en-us/library/cc668205.aspx
我也在这里找到了这个问题,但是我没有足够的细节来弄清楚如何为自己实现解决方案:How to connect a ribbon button to a function defined in an Excel add-in?
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
}
}
提前感谢您的协助。
答案 0 :(得分:0)
通常,您可以使用Globals.ThisAddIn.Application来访问应用程序级别和文档级UI。 我希望this link可以提供帮助。以下是向工作表添加按钮的示例,如下所示:
Globals.Factory.GetVstoObject(
Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1])
.Controls.AddControl(button, selection, buttonName);
看起来像
答案 1 :(得分:0)
VSTO提供了两种创建自定义UI的方法:
功能区设计师 - 请参阅Walkthrough: Creating a Custom Tab by Using the Ribbon Designer。
原始XML标记 - Walkthrough: Creating a Custom Tab by Using Ribbon XML。
在这两种情况下,您都可以使用Globals.ThisAddin
属性访问加载项属性和方法,该属性返回加载项类的实例(如上面列出的代码所示)。