使用VSTO访问C#类文件中的Excel工作表

Pet*_*217 5 c# excel vsto

我使用VSTO模板(VS2010,Excel2007)创建了一个Excel Addin.在解决方案资源管理器中,我有一个名为Excel的组,在其下面有一个名为ExcelAddIn.cs的文件.这可以通过代码访问活动工作表

public partial class MyAddIn
{
    Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
    Excel.Range firstRow = activeWorksheet.get_Range("A1",missing);
}
Run Code Online (Sandbox Code Playgroud)

此代码工作正常,即.我可以使用Excel模型.

但是,我不想将所有处理代码放在这个类文件中,而是希望在另一个类文件中处理Excel工作表数据.我已创建此文件,但无法使用上面的任何代码,即.我似乎无法从此文件访问Excel模型.我复制了'使用Microsoft.Office.Tools.Excel'引用,但是放入一行如下:

Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
Run Code Online (Sandbox Code Playgroud)

给我一个'名称'应用程序'在当前上下文中不存在'错误.

关于从这个单独的类文件中获取Excel模型需要做什么参考/更改的任何想法?

顺便说一句.有效的文件是指第一个代码行的'Excel.Application'对象,第二个不起作用的单独文件是指'Microsoft.Office.Interop.Excel'对象.

谢谢皮特

====找到答案====从您添加的其他课程中获取工作表的方法是简单地访问

Globals.ThisAddIn.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

例如:

Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

其中'ThisAddIn'是您的向导创建的类的名称(您可能已将其重命名).

因此,使用Globals来获取ThisAddin代码之外的Excel对象.

wil*_*sjd 7

你自己的答案在这里:

从您添加的其他类中获取工作表的方法是简单地访问

Globals.ThisAddIn.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

例如:

Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

其中'ThisAddIn'是您的向导创建的类的名称(您可能已将其重命名).

因此,使用Globals来获取ThisAddin代码之外的Excel对象.