c# - 在 VSTO 插件中访问 Globals.ThisAddIn.Application 时出现异常
问题描述
我正在尝试使用 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)。但是当我打开文件后单击按钮时,应该有一个应用程序对象和一个全名。
我还查看了本指南,但这并没有太大帮助,因为他们也使用Globals.ThisWorkbook.Application
但成功。
你对如何解决这个问题有什么建议吗?(需要更多初始化代码等吗?)
解决方案
@Cindy Meister为我指出了正确的方向:
实际上,我正在编写应用程序级加载项而不是文档级自定义,因此没有ThisWorkbook
. 我需要看的是Globals.ThisAddIn.Application.ActiveWorkbook
(所以调用单击的工作簿实例)。
替换ThisWorkbook
为ActiveWorkbook
诀窍。
推荐阅读
- nuxt.js - $auth.loggedIn 如何在 nuxt.js 中工作?
- angular - Angular - 错误 TS7030:并非所有代码路径都在 Angular resetHandler 中返回值(数据:任何)
- javascript - 在 Vue 模板中调用/使用道具之前检查道具的可用性,以避免对我的应用程序的期望
- spring-boot - 如何配置 KeycloakRestTemplate 在 Spring Boot 中使用直接裸模拟?
- scala - 如何将 jar 文件连接到源代码的提交?
- google-chrome-extension - Chrome扩展中的屏幕共享时如何放置域而不是应用程序ID?
- sql - 选择另一个表SQL中两个日期之间的数据总和
- c++ - 生成的 sdf 中缺少特征
- binary - 如何在 cpp 中存储一个非常大的数字,它也超过 unsigned long long
- kitti - 相机位置到 Kitti 数据库里程计