Excel加载项中的Application.ActiveWorkbook为空
我正在写一个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; }
当我debugging时,一切都很好。 但是,当我直接从我的硬盘驱动器打开Excel文件,然后我得到Application.ActiveWorkbook
为null
。 任何人都可以帮助我理解这一点。
我想在excel文件打开时启动我的加载项。 基本上我的加载项跟踪Excel工作簿中的变化,并做一些必要的行动。
如果有问题,我正在使用Office 2007,Visual Studio 2012.我可以在更改项目文件并用12
replaceOffice 14
部分后运行解决scheme。
我假设你的意思是ThisAddIn_Startup
,而不是ThisAddInStartup
。 如果没有,那么这可能是一个问题。
build议您不要尝试访问ThisAddin_Startup方法中的文档。 这是因为Office运行此方法时并不总是有一个文档,所以你可能会遇到一些奇怪的行为。 相反,当用户打开一个文档并在那里运行你的代码时,钩入事件。 它应该看起来像这样(注意:我没有testing这个代码,但它应该工作):
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
- Excel的加载项:找不到引用或库
- 不正确的asynchronous/等待工作,Excel应用程序级别加载项中的Excel事件
- VBA – 在Excel项目之间传递variables
- 使用C#创build新的Excel公式/函数
- 当调用AddIns.Item 时,索引无效(从HRESULTexception:0x8002000B(DISP_E_BADINDEX)))
- 如何捕捉错误和debugging在Visual Studio 2010下在C ++中创build的Excel DLL插件?
- VSTO Bug – GetVstoObject返回错误的工作表
- Office 2010添加自定义选项卡/组包含不需要的命令
- Excel.Application.SelectionChange只触发一次