【发布时间】:2020-01-19 01:18:13
【问题描述】:
我正在尝试使用 C# 创建一个 MS Office VSTO 插件。 AddIn 包含我通过 VS19 中的 Ribbon-Designer 添加的功能区。
我没有修改 ThisAddin.cs 文件:
namespace MyAddIn
{
public partial class ThisAddIn
{
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
}
}
在功能区中,我添加了一个按钮并编写了一些单击时要执行的代码:
namespace MyAddIn
{
public partial class my_ribbon
{
private void my_ribbon_Load(object sender, RibbonUIEventArgs e)
{
}
private void btn_myButton_Click(object sender, RibbonControlEventArgs e)
{
MessageBox.Show(Globals.ThisAddIn.Application.ThisWorkbook.FullName);
}
}
}
但是,每当我单击按钮时,C# 都会抛出以下异常:
System.Runtime.InteropServices.COMException
HResult=0x800A03EC
Message=Ausnahme von HRESULT: 0x800A03EC
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
我在调试时看到Globals.ThisWorkbook.Application 抛出了错误。
我发现0x800A03EC 是 Name-Not-Found 的错误代码(根据this)。
但是当我在打开文件后单击按钮时,应该有一个应用程序对象以及一个全名。
我还查看了this guide,但这并没有太大帮助,因为他们也使用了Globals.ThisWorkbook.Application,但成功了。
您对如何解决此问题有任何建议吗? (需要更多初始化代码等吗?)
【问题讨论】:
-
你在任何地方定义
Application.ThisWorkbook吗?ThisWorkbook看起来像是 document-level 自定义的代码,而不是应用程序级别的插件。如果你替换Globals.ThisAddIn.Application.Workbook[1].FullName;,你会得到不同的结果吗?
标签: c# vsto excel-addins