【问题标题】:VSTO excel paste failedVSTO excel粘贴失败
【发布时间】:2014-10-09 18:28:34
【问题描述】:

我正在尝试从一个有 5 张纸的工作簿中复制。然后将所有 5 个工作表中的内容粘贴到另一个工作簿工作表中。

第一次粘贴成功,然后尝试粘贴第二张会报错:

由于复制区域和粘贴区域不同,无法粘贴信息 大小或形状。请尝试以下方法之一:

  • 单击单个单元格,然后粘贴。
  • 选择一个大小和形状相同的矩形,然后粘贴。

以下是我的代码:

int rowCount = 0;

app = Globals.ThisAddIn.Application;
sourceBook = app.ActiveWorkbook;

targetBook = app.Workbooks.Add(Type.Missing);
targetSheet = targetBook.Worksheets.Add(Type.Missing);
targetSheet.Name = "Merge Result";


foreach (Excel.Worksheet sheet in sourceBook.Worksheets)
{

    Excel.Range workSheetRange = sheet.UsedRange;
    workSheetRange.Copy(Type.Missing);
    Excel.Range pasteStartCell = (Excel.Range)targetSheet.Cells[rowCount + 1, 1];
    Excel.Range pasteEndCell = (Excel.Range)targetSheet.Cells[rowCount + workSheetRange.Rows.Count, workSheetRange.Columns.Count];
    Excel.Range pasteArea = targetSheet.get_Range(pasteStartCell, pasteEndCell);
    pasteArea.Select();
    targetSheet.Paste(Type.Missing, Type.Missing);
    rowCount = rowCount + workSheetRange.Rows.Count;

}

我也试过

Excel.Range pasteStartCell = (Excel.Range)targetSheet.Cells[rowCount + 1, 1];
pasteStartCell.Select()

然后粘贴,同样的错误信息。

有谁知道我哪里出错了?

【问题讨论】:

  • 您好 jbarker2160:感谢您对 Range.PasteSpecial 进行尝试的建议,但仍然出现相同的错误。是否需要在第二次复制之前清除剪贴板?
  • 不要发布不能作为答案的更改 - 使用更新编辑您的问题是正确的过程。

标签: c# excel vsto paste


【解决方案1】:

您应该避免使用.Select(),而是尝试使用Range.PasteSpecial()

【讨论】:

  • 您好 jbarker2160:谢谢您的回答。但是我尝试了以下代码,它仍然给我同样的错误信息。
  • 您好 jbarker2160:感谢您对 Range.PasteSpecial 进行尝试的建议,但仍然出现相同的错误。是否需要在第二次复制之前清除剪贴板?
  • 在仔细查看您的代码之后,问题是您试图将整个工作表粘贴到另一个工作表的一部分中。您只需选择要复制的数据并复制并粘贴即可。
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多