逐步在两个不同的工作簿中从一个工作表复制到另一个工作表

我有两个工作簿。 他们都是开放的。 Book1.xls和Book2.xlsm。 在每个工作簿中,我都有不同的工作表:

Book1.xls – > A1,A2,A3

Book2.xlsm – > B1,B2,B3

我想从Book1.A1到Book2.B2(或任何其他工作表)复制特定单元格范围(B5:I29)。

我似乎打了一个强硬的理解,遵循的语法和正确的程序。

我试过了:

' 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) 

但我无法做到这一点。 你能解释我正确的程序设置工作簿,工作表,单元格区域,复制和粘贴?

谢谢

几个错误。

如果工作簿已打开,则只需更改即可

 Set workbookToCopyFrom = Workbooks(FileToCopyFrom) 

 Set workbookToCopyFrom = Workbooks("Book1.xls") 

另一个类似

 Set workbookToCopyTo = Workbooks("Book2.xlsm") 

另外,您还缺less范围对象和Sheet对象中的S之前的DOT

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

需要是

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

接下来,您的目的地被错误地编码。 我想你想这样做?

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

所以你的最终代码将如下所示

 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)