Excel复制工作表
在Excel VBA中(或者如果您可以在C#中使用.NET的Excels对象库),如何将工作表从一个工作簿复制到另一个工作簿中的另一个工作表。 基本上,我正在做的是将我的每一张表复制到另一个工作簿中的中央工作表中,然后在那里做所有我需要做的事情。 我尝试使用Range.Copy方法,我给目标参数作为其他工作簿的范围。 它工作完美,但有一个问题,那就是每次我复制它replace该工作表中的旧数据。 我怎么做这样的事情,当我把它粘贴到工作表的最后。
编辑:我search,并find了一种方式,但现在当我复制单元格时,我得到一个COMexception与消息“要将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中find最后一个使用的单元格,并将在其下面追加数据。
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)
- Excel VBA将XL-2007已启用macros的工作簿复制为不带macros的excel-2003文件
- Excel VBA复制图片/图表到另一个工作簿
- 复制工作表,基于范围重新命名工作表,并根据范围编辑复印的工作表
- VBA:复制范围。 运行时间错误9 – 下标超出范围
- 如何dynamic地将单元格值放入excel的多页文本框中?
- 在同一列中的多个工作表中识别Excel中的重复项?
- selection.copy导致selection.pastespecial不工作。 优秀的VBA
- 如何复制xlsx文件而不locking它的Excel
- C#Excel生成 – 范围复制(不需要的行为)使用最后一个单元格作为正确数据的第一个单元格