Я создал надстройку Excel, используя шаблон VSTO (VS2010, Excel2007).В обозревателе решений у меня есть группа с именем 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 для доступа к объектам Excel вне кода ThisAddin.