复制粘贴工作表(VBA)

时间:2016-08-11 01:22:35

标签: vba

我不知道为什么,我无法让它发挥作用。我把它简化为三行 - 但它仍然给我带来了问题。

基本上我想打开一个工作簿并将一些数据复制到一个主工作簿中。

我有:

Sub copypaste()

Workbooks.Open("...Test.xlsx").Sheets("Sheet1").Cells(1, 1).Copy
ActiveWorkbook.Close
Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues

End Sub

我已经看到运行时错误438(对象不支持此属性方法),我可以粘贴但只是命中1004应用程序定义的错误或对象定义的错误。

老实说,我不知道在这个简单的任务中我哪里出错了!

提前谢谢你,

汤姆

2 个答案:

答案 0 :(得分:0)

在粘贴数据后尝试关闭工作簿。 例如,您可以使用以下内容:

Sub copypaste()

    Dim WBopen As Workbook, Wb As Workbook

    Set Wb = ActiveWorkbook
    Set WBopen = Workbooks.Open("...Test.xlsx")

    WBopen.Sheets("Sheet1").Cells(1, 1).Copy
    Wb.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues
    WBopen.Close

End Sub

答案 1 :(得分:0)

因为您在粘贴数据之前关闭了Workbook,所以它会失败。

如果可以避免,最好不要使用.Copy.Paste

请参阅下面的示例,了解Values的直接设置:

Sub copypaste()

    Dim wbMaster As Workbook, wbData As Workbook

    Set wbMaster = Workbooks("Master.xlsm")
    Set wbData = Workbooks.Open("Data.xlsx")

    wbMaster.Sheets("Sheet1").Range("A1").Value = wbData.Sheets("Sheet1").Range("A1").Value
    wbData.Close False

End Sub