2017-06-06 61 views
0

我想粘贴不同工作表的最后一行的信息。我已经复制了这个信息,这个宏只是为了粘贴它。用我现在的代码,我得到一个错误,说“粘贴方法的工作表类失败”我该如何解决这个问题?最后一行粘贴到不同的工作表VBA

这里是代码:

Windows("m.xlsx").Activate 
Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).Select 
ActiveSheet.Paste 
Range("D45").Select 
Windows("d.xlsx").Activate 
+0

尝试完全限定您的“单元”对象,但您缺少“工作表”对象。例如'Workbooks(“m.xlsx”)。Worksheets(“SheetName”)。Cells(...)。复制' –

回答

0

Excel中是众所周知的清除剪贴板,因此你应该把拷贝命令一行粘贴之前。

所以你的情况,copy命令也走之前

ActiveSheet.Paste 

也请避免使用.Select/Activate。请阅读How to avoid using Select in Excel VBA macros

这是你正在尝试(未经测试)?

Sub Sample() 
    Dim thisWb As Workbook, thatWb As Workbook 
    Dim lRow As Long 

    Set thisWb = Workbooks("d.xlsx") 
    Set thatWb = Workbooks("m.xlsx") 

    '~~> Change Sheet1 to the relevant sheet 
    With thatWb.Sheets("Sheet1") 
     '~~> Find last Row to paste 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1 

     '~~> Change Sheet1 to the relevant sheet 
     '~~> Replace A1:A10 with the relevant range that you are trying to copy 
     thisWb.Sheets("Sheet1").Range("A1:A10").Copy .Range("A" & lRow) 
    End With 
End Sub 
+0

感谢您的回应,我正在尝试做的是类似的,但因为我对VBA没有经验,我将这个宏与前一个宏相结合,最后复制一组过滤的数据。我的最终目标是从“d”复制到“m”的最后一行 – acabr136

+0

从“D”复制什么? –

+0

一些过滤的数据,代码如下所示: 'ActiveSheet.Range(“$ J $ 12:$ O $ 64”)。AutoFilter Field:= 4,Criteria1:=“No” ActiveWindow.SmallScroll Down: = -21 行( “16:16”)。选择 范围(选择,Selection.End(xlDown))。选择 Selection.Copy' – acabr136

相关问题