我最近一直在寻找加快将数据从一个工作表复制到另一个工作表的方法。我偶然发现了这段很好的代码(不过这是2013年发布的)。
你可以帮忙吗?我不想指定工作簿的任何路径(如下例所示)。我打开了两个工作表,并希望通过文件名解决它们。我尝试将“workbooks.open”更改为“window(”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
End Sub
答案 0 :(得分:1)
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
答案 1 :(得分:1)
使用PasteSpecial
时,您需要添加XlPasteTypewhat
(您要使用的复制范围中的参数/ s)。 XlPasteTypewhat
的一些选项包括:xlPasteAll
,xlPasteFormulas
,xlPasteValues
等。
您可以在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