从工作簿复制范围(无文件夹path版本)

我最近一直在寻找方法来加快从一个工作表复制数据到另一个。 我遇到了这个不错的代码(不过这个post是在2013年发布的)。

能否请你帮忙? 我不想指定工作簿的任何path(如下面的例子)。 我有两个工作表打开,并想通过文件名解决他们。

我已经尝试改变“workbooks.open”到“窗口(”xxx“)。激活”但这是行不通的。

谢谢!

Sub foo() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open(" path to copying book ") Set y = Workbooks.Open(" path to destination book ") x.Sheets("name of copying sheet").Range("A1").Copy y.Sheets("sheetname").Range("A1").PasteSpecial 

结束小组

 Sub foo() Dim x As Workbook Dim y As Workbook 'Replace the text between the "" with the exact name of the workbook Set x = Workbooks("ActualNameOfWorkBook.xls") Set y = Workbooks("ActualNameOfOtherWorkBook.xls") x.Sheets("name of copying sheet").Range("A1").Copy y.Sheets("sheetname").Range("A1").PasteSpecial End Sub 

当使用PasteSpecial您需要添加XlPasteTypewhat (您要使用的复制范围中的哪个参数)。 XlPasteTypewhat一些选项是: xlPasteAllxlPasteFormulasxlPasteValues

你可以在MSDN上阅读更多。

在下面的例子中,我使用xlPasteAll

 Sub foo() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open("file_name_x.xslx") '<-- don;t forget to add the extension, .xslx or .xlsm Set y = Workbooks.Open("file_name_y.xslx") '<-- don;t forget to add the extension, .xslx or .xlsm x.Sheets("name of copying sheet").Range("A1").Copy y.Sheets("sheetname").Range("A1").PasteSpecial xlPasteAll '<-- add parameter after the PasteSpecial End Sub