【发布时间】:2019-01-17 18:33:28
【问题描述】:
我目前正在尝试从另一个工作簿复制工作表,我通过使用 Copy() 和 PasteSpecial() 成功。但是,我想知道为什么即使在线许多解决方案似乎都使用这种方法,以下代码也不起作用。
Workbook currBook = Globals.ThisAddIn.GetActiveWorkbook();
Workbook copyBook = Globals.ThisAddIn.OpenWorkbook(Globals.ThisAddIn.Application.ActiveWorkbook.Path + @"\copyFile.xlsm", true, true);
//required worksheet
Worksheet copySheet = Globals.ThisAddIn.GetWorksheet(copyBook, "ToCopy");
copySheet.Copy(currBook.Worksheets[1]);
//close workbook
copyBook.Close();
用于获取特定工作表的函数:
public Excel.Worksheet GetWorksheet(Excel.Workbook book, string sheetName, bool create = false)
{
foreach (Excel.Worksheet sheet in book.Worksheets)
{
//worksheet with name found
if (sheet.Name == sheetName)
{
sheet.Activate();
return sheet;
}
}
//worksheet can't be found
if (create)
{
Excel.Worksheet sheet = book.Worksheets.Add();
sheet.Name = sheetName;
sheet.Activate();
return sheet;
}
return null;
}
所述代码没有错误,并且工作表已经过测试存在。该程序根本不会在 currBook 中创建副本
【问题讨论】:
标签: c# excel vsto office-addins excel-addins