2009-10-21 100 views
1

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

编辑:我搜索,找到了一种方法,但现在当我复制单元格我得到一个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); 
+0

工作表具有有限的尺寸,因此,如果您要复制工作表全,没有余地将多于一个“附加”到单个工作表中。 – wakingrufus 2009-10-21 10:16:01

回答

1

- 更新 -

这段代码复制单元格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) 
+0

确实如此。但我想将表单的内容复制到另一个工作簿中的另一个工作表;) – akif 2009-10-21 09:57:08

+0

也许您应该澄清标题为“Excel复制工作表内容”而不是工作表;) – Marc 2009-10-21 10:29:27

+0

好吧,它返回1048577 – akif 2009-10-21 10:50:52

相关问题