我正在编写一个 Excel 插件。以下是我的代码
private void ThisAddInStartup(object sender, EventArgs e)
{
Excel.Sheets sheets = Application.ActiveWorkbook.Sheets;
_worksheet = (from Excel.Worksheet sheet in sheets where sheet.Name.Contains(SheetName) select sheet).FirstOrDefault();
Application.SheetChange += ApplicationSheetChange;
}
当我调试时,一切都很好。但是当我直接从硬盘打开 Excel 文件时,我得到Application.ActiveWorkbook
as null
。任何人都可以帮助我理解这一点。
我想在打开 Excel 文件时启动我的加载项。基本上,我的加载项正在跟踪工作簿 Excel 工作表中的更改并执行一些所需的操作。
如果重要的话,我正在使用 Office 2007、Visual Studio 2012。更改项目文件并替换 Office 后,我可以运行该解决方案14
与12
.
我假设你的意思是ThisAddIn_Startup
而不是ThisAddInStartup
。如果不是那么这可能是一个问题。
建议您不要尝试访问 ThisAddin_Startup 方法内的文档。这是因为运行此方法时 Office 并不总是准备好文档,因此您可能会遇到一些奇怪的行为。相反,挂钩到用户打开文档并在那里运行代码时触发的事件。它应该看起来像这样(注意:我还没有测试过这段代码,但它应该可以工作):
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// Hook into the workbook open event
this.Application.WorkbookOpen += new AppEvents_WorkbookOpenEventHandler(WorkWithWorkbook);
}
private void WorkWithWorkbook(Microsoft.Office.Interop.Excel.Workbook workbook)
{
// Workbook has been opened. Do stuff here.
}
查看有关编写应用程序级插件的 MSDN 文章。特别注意讨论应用程序启动时访问文档的部分。
http://msdn.microsoft.com/en-us/library/vstudio/bb157876.aspx http://msdn.microsoft.com/en-us/library/vstudio/bb157876.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)