2013-12-10 109 views
1

我有兩個工作簿。他們都是開放的。 Book1.xls和Book2.xlsm。在每一個這些工作簿的我有不同的工作表:Step by step將一個工作表複製到兩個不同工作簿中的另一個工作表

Book1.xls的 - > A1,A2,A3

Book2.xlsm - > B1,B2,B3

我要複製的特定小區範圍(B5:I29)從Book1.A1到Book2.B2(或任何其他工作表)。

我似乎打了一個hardwall瞭解的語法和遵循正確的程序。

我想:

' Set paths 
FileToCopyFrom = "C:\Book1.xls" 'change path as required 
FileToCopyTo = "C:\Book2.xlsm"   'change path as required 

' Set Workbooks 
Dim workbookToCopyFrom As Workbook 
Set workbookToCopyFrom = Workbooks(FileToCopyFrom) 
Dim workbookToCopyTo As Workbook 
Set workbookToCopyTo = Workbooks(FileToCopyTo) 

' Copy+paste 
workbookToCopyFrom.sheet("A1")Range("B5:B29, I5:I29").Copy 
Worksheets("B1").Range("A10").PasteSpecial (xlPasteValues) 

但我無法做到這一點。您能否向我解釋設置工作簿,工作表,單元格區域,複製和粘貼的正確程序?

謝謝

回答

2

幾個錯誤。

如果工作簿被打開,然後簡單地改變

Set workbookToCopyFrom = Workbooks(FileToCopyFrom) 

Set workbookToCopyFrom = Workbooks("Book1.xls") 

同樣,對於其他

Set workbookToCopyTo = Workbooks("Book2.xlsm") 

而且你缺少一個DOT之前的範圍對象和在Sheet對象中使用S

workbookToCopyFrom.sheet("A1")Range("B5:B29, I5:I29").Copy 

必須

workbookToCopyFrom.Sheets("A1").Range("B5:B29, I5:I29").Copy 

接下來,你的目標是不正確編碼。我想你想這樣做?

​​

所以你最終代碼看起來像這樣

Dim workbookToCopyFrom As Workbook 
Dim workbookToCopyTo As Workbook 

Set workbookToCopyFrom = Workbooks("Book1.xls") 

Set workbookToCopyTo = Workbooks("Book2.xlsm") 

' Copy+paste 
workbookToCopyFrom.Sheets("A1").Range("B5:B29, I5:I29").Copy 
workbookToCopyTo.Sheets("B1").Range("A10").PasteSpecial(xlPasteValues) 
+3

有多少,我們都已經回答了:)? – 2013-12-10 15:18:15

+1

@mehow:你的意思是解決了多少問題? –

+1

這兩個簡單的問題以及如何在工作簿之間進行復制。很好的答案指出了所有的壞處。我親自添加的一件事情是實際上從閉環工作簿獲取值,而不是將其複製粘貼,因爲它會更快。如果我們不需要格式化等值只是值的方式去:) – 2013-12-10 15:23:03

相關問題