[英]Excel copy worksheet
在Excel VBA中(或者如果可以在C#中使用,我将使用.NET中的Excels对象库),如何将工作表从一个工作簿复制到另一个工作簿的另一个工作表中。 基本上,我正在做的是将我的每张工作表都复制到另一个工作簿的中央工作表中,然后将在那里做所有我需要做的事情。 我尝试使用Range.Copy方法,将Destination参数指定为其他工作簿的范围。 它工作得很好,但是有一个问题,就是每次我复制它都会替换该工作表中的旧数据。 我该如何做,以便粘贴时将其粘贴到工作表的末尾。
编辑:我搜索并找到了一种方法,但是现在当我复制单元格时,我得到一个COM异常,并显示消息“要将Excel工作表中的所有单元格粘贴到当前工作表中,必须粘贴到第一个单元格(A1或R1C1) ”。
以下是代码,它在C#中
logWorksheet = logWorkbook.ActiveSheet as Excel.Worksheet;
Excel.Range tempRange = logWorksheet.Cells[logWorksheet.Rows.Count, "A"] as Excel.Range;
tempRange = tempRange.get_End(Excel.XlDirection.xlUp);
int emptyRow;
if (tempRange.Row > 1)
emptyRow = tempRange.Row + 1;
else
emptyRow = tempRange.Row;
string copyLocationAddress = Convert.ToString(emptyRow);
Excel.Range copyLocation = logWorksheet.get_Range(
"A" + copyLocationAddress, Type.Missing) as Excel.Range;
// copy whole workbook to the central workbook
tempLogSheet.Cells.Copy(copyLocation);
-更新-
此摘要将Book1的单元格A1:A3复制到Book2。 它将在Book2中找到最后使用的单元格,并将数据附加在其下面。
Sub CopyRange()
Dim source As Worksheet
Dim destination As Worksheet
Dim emptyRow As Long
Set source = Workbooks("Book1.xlsx").Sheets("Sheet1")
Set destination = Workbooks("Book2.xlsx").Sheets("Sheet1")
'find empty row (actually cell in Column A)'
emptyRow = destination.Cells(destination.Rows.Count, 1).End(xlUp).Row
If emptyRow > 1 Then
emptyRow = emptyRow + 1
End If
source.Range("A1:A3").Copy destination.Cells(emptyRow, 1)
End Sub
-老-
此示例将Book1.xlsx的所有工作表复制到Book2.xlsx:
Workbooks("Book1.xlsx").Worksheets.Copy Before:=Workbooks("Book2.xlsx").Sheets(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.