【发布时间】:2011-10-28 20:53:04
【问题描述】:
我使用 VSTO 模板(VS2010、Excel2007)创建了一个 Excel 插件。 在解决方案资源管理器中,我有一个名为 Excel 的组,在该组下有一个名为 ExcelAddIn.cs 的文件。这可以通过类似的代码访问活动工作表
public partial class MyAddIn
{
Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
Excel.Range firstRow = activeWorksheet.get_Range("A1",missing);
}
等等。这段代码工作正常,即。我可以使用 Excel 模型。
然而,我不想将我所有的处理代码放在这个类文件中,而是想在另一个类文件中处理 Excel 工作表数据。我已经创建了这个文件,但我无法在其中使用任何类似上面的代码,即。我似乎无法从此文件访问 Excel 模型。 我已经复制了“使用 Microsoft.Office.Tools.Excel”的引用,但添加了如下一行:
Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
给我一个“当前上下文中不存在名称‘应用程序’”错误。
关于我需要从这个单独的类文件中获取 Excel 模型的参考/更改有什么想法吗?
顺便说一句。有效的文件是指第一个代码行的“Excel.Application”对象,第二个不起作用的单独文件是指“Microsoft.Office.Interop.Excel”对象。
谢谢 皮特
==== 找到答案 ==== 从您添加的其他类中获取工作表的方法是简单地访问
Globals.ThisAddIn.Application.ActiveSheet;
例如:
Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet;
其中 'ThisAddIn' 是您的向导创建的类的名称(您可能已将其重命名)。
因此,使用 Globals 来获取 ThisAddin 代码之外的 Excel 对象。
【问题讨论】:
-
如果有人可以将答案代码粘贴到答案部分,那么问题就结束了!我不能 - 这里有太多的初级汉堡。Pete