Я пытаюсь скопировать рабочий лист из существующего файла Excel в текущую книгу. У меня есть Excel надстройки со следующим кодом:Копия Worksheet Excel VSTO C#
string wsName = "template." + ((System.Windows.Forms.Button)sender).Tag + "." + ((System.Windows.Forms.Button)sender).Text;
Microsoft.Office.Interop.Excel.Application x = new Microsoft.Office.Interop.Excel.Application();
x.Visible = false; x.ScreenUpdating = false;
x.Workbooks.Open(Properties.Settings.Default.TemplatePath);
try
{
foreach (Worksheet w in x.Worksheets)
if (w.Name == wsName)
w.Copy(Type.Missing, Globals.ThisAddIn.Application.Workbooks[1].Worksheets[1]);
}
catch
{ }
finally
{
x.DisplayAlerts = false; x.Workbooks.Close(); x.DisplayAlerts = true; // close application with disabled alerts
x.Quit(); x.Visible = true; x.ScreenUpdating = true;
x = null;
}
открыть второй экземпляр Excel в фоновом режиме на основе пути шаблона. Я нахожу рабочий лист w. Все это прекрасно работает, однако я пытаюсь скопировать рабочий лист в активную книгу, я не могу заставить ее работать. Текущая ошибка заключается в том, что метод Copy не может быть найден, однако, когда я удаляю аргумент, он выполняет отлично. Поэтому я предполагаю, что моя проблема находится в Globals.ThisAddIn.Appllication.Workbooks [1]. Оценка этого аргумента возвращает текущую рабочую среду, которая активна в AddIn.
Имеет смысл на самом деле, если бы были более подробные исключения из VSTO :-) Я попробую сегодня вечером и дам вам знать. – Martin
Это решило, что я теперь открываю файл в экземпляре надстройки и копирует его в порядке. – Martin