在 VSTO AddIn 中访问 Globals.ThisAddIn.Application 时出现异常



我正在尝试使用C#创建MS Office VSTO AddIn。 加载项包含我通过VS19中的功能区设计器添加的功能区。

我保留了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是名称未找到的错误代码(根据此(。 但是当我在打开文件后单击按钮时,应该有一个应用程序对象以及一个全名。

我也看了一下本指南,但这并没有多大帮助,因为他们也使用Globals.ThisWorkbook.Application但成功。

您对如何解决此问题有任何建议吗?(还需要初始化代码等吗?

@Cindy Meister为我指出了正确的方向:

实际上,我正在编写应用程序级加载项而不是文档级自定义项,因此没有ThisWorkbook。我需要查看的是Globals.ThisAddIn.Application.ActiveWorkbook(因此调用单击的工作簿实例(。

ActiveWorkbook替换ThisWorkbook就成功了。

相关内容

最新更新