1

在 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);
4

1 回答 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)
于 2009-10-21T09:50:49.163 回答