从工作簿复制范围(没有文件夹路径版本)

时间:2017-01-13 09:44:56

标签: excel vba excel-vba

我最近一直在寻找加快将数据从一个工作表复制到另一个工作表的方法。我偶然发现了这段很好的代码(不过这是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

2 个答案:

答案 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的一些选项包括: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