首页 文章

Excel复制工作表

提问于
浏览
1

在Excel VBA中(或者如果您可以在C#中使用.NET中的Excels对象库),如何将工作表从一个工作簿复制到另一个工作簿中的另一个工作表 . 基本上,我正在做的是将我的每张工作表复制到另一个工作簿的中央工作表中,然后将完成我需要在那里完成的所有工作 . 我尝试使用Range.Copy方法,我将Destination参数作为其他工作簿的范围 . 它工作得很好,但有一个问题,就是每次我复制它都会替换该工作表中的旧数据 . 我如何做这样的事情,当我将它粘贴到工作表的末尾时 .

EDIT: 我搜索并找到了一种方法,但现在当我复制单元格时,我得到一个COM异常,并带有消息"To paste all cells from an Excel worksheet into the current worksheet, you must paste into the first cell (A1 or 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);

1 回答

  • 1
    • 更新 -

    此片段将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)
    

相关问题