2017-07-31 66 views
0

我似乎无法让我的代码正常工作。我有7个生产力文件,我需要从标题为worktracker的表中复制数据,并将这些文件粘贴到masterfile中的工作跟踪表中。我遇到运行时错误1004 方法object_Worksheet的范围失败。有人可以建议吗?非常感谢!将数据从工作簿的特定工作表复制到另一个具有相同工作表名称的数据

paste image

私人小组CommandButton1_Click()

Dim file As String 
Dim myPath As String 
Dim wb As Workbook 
Dim rng As Range 
Dim lastrow As Long, lastcolumn As Long 

Dim wbMaster As Workbook 
Set wbMaster = Workbooks("WorkTracker_Master.xlsm") 

Set rng = wbMaster.Sheets("WorkTracker").Range("A4:W4") 

myPath = "\\BMGSMP1012\GBDMC_Team$\GBDM_ContentManagement\+CM_Reports\Productivity Reports\FY18\" 
file = Dir(myPath & "*.xls*") 
    While (file <> "") 

    Set wb = Workbooks.Open(myPath & file) 

    lastrow = wb.Worksheets("WorkTracker").Cells(Rows.Count, 1).End(xlUp).Row 
    lastcolumn = wb.Worksheets("WorkTracker").Cells(1, Columns.Count).End(xlToLeft).Column 
    Range(Cell(2, 1)(lastrow, lastcolumn)).Copy 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close 

    erow = WorkTracker.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

    ActiveSheet.Paste Destination = Worksheets("WorkTracker").Range(Cells(erow, 1), Cells(erow, 4)) 

     wb.Close SaveChanges:=True 
     Set wb = Nothing 

     file = Dir 
    Wend 

    Application.CutCopyMode = False 

End Sub 
+0

能否请您粘贴您的实际代码到的问题 - '范围(小区(2,1)(LASTROW,lastcolumn)) .Copy'是无效的语法,因此代码不会运行。所以你不会得到该代码的1004错误。并告诉我们(实际)代码的哪一行会给出错误。 – YowE3K

+0

谢谢YowE3K ...我用{}粘贴了代码...对不起,我仍然在这个 – agatha

+0

这条线说'Range(Cell(2,1)(lastrow,lastcolumn))。Copy'仍然存在 - 是那真的是你的真实代码? – YowE3K

回答

1

您需要完全限定所有对象,一个舒适而简便的方法,是用嵌套With语句来单独每个Workbook

另外,由于@ YowE3K已经在上面的注释中提到过,所以在定义复制的Range时出现语法错误。

尝试下面的代码,你While (file <> "")循环内,以后你Set wb = Workbooks.Open(myPath & file)

With wb.Worksheets("WorkTracker") 
    lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row 
    lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    .Range(.Cells(2, 1), .Cells(lastrow, lastcolumn)).Copy 
End With 

With wbMaster.Worksheets("WorkTracker") 
    ' get first empty row in column "A" 
    erow = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

    ' paste in the first empty row 
    .Range("A" & erow).PasteSpecial 
End With 

wb.Close SaveChanges:=True 
Set wb = Nothing 
+0

嗨Shai Rado ...我复制你的代码,并根据你的建议将它放到代码中......但它似乎只是复制头部而不是从单元格A4的条目:W4以上?对不起还是真的新编码vba – agatha

+0

@agatha检查你的lastRow变量值 –

+0

谢谢!我对如何更新代码实际上感到不知所措......我刚刚从在线教程中复制了代码 – agatha

相关问题