2009-10-21 150 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

相關問題