使用VBA宏从另一个Excel文件复制数据

时间:2016-05-24 14:03:48

标签: excel vba excel-vba

我想打开一个工作簿,然后从打开的工作簿表复制到我的工作簿表:

Private Sub Workbook_Open()
    Dim openedFile As String
    Dim sourcebook As Workbook
    openedFile = Application.GetOpenFilename(fileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm") 'Source book opening

    Set sourcebook = Workbooks.Open(openedFile)

    Application.CutCopyMode = True
    sourcebook.Worksheets("source_sheet").Range("A1:L100").Copy
    ThisWorkbook.Worksheets("dest_sgheet").Range("A1").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Call sourcebook.Close(False)
End Sub

运行此代码后出现此错误消息:

  

运行时错误'1004“:Range类的PasteSpecial方法失败

这一行出现了:

ThisWorkbook.Worksheets("dest_sheet").Range("A1").PasteSpecial Paste:=xlPasteValues

2 个答案:

答案 0 :(得分:0)

首先尝试激活工作簿("此工作簿"),然后激活您要粘贴数据的工作表。由于范围不可见也不存在,因此容易发生错误。

答案 1 :(得分:0)

您的代码应该有效。 改变这一行:

ThisWorkbook.Worksheets("dest_sgheet").Range("A1").PasteSpecial Paste:=xlPasteValues

这一个:

 ThisWorkbook.Worksheets("dest_sheet").Range("A1").PasteSpecial Paste:=xlPasteValues

修改 基于2016年5月25日的OP评论,我在修正了表格拼写中的小错字错误后,按照OP代码重新运行程序。程序运行成功没有任何问题。我没有得到运行时错误1004.屏幕截图显示正在正确复制数据。

screenshot showing input and output