将可变范围从其他文件复制到摘要表

时间:2014-09-25 12:53:21

标签: vba

此代码用于打开文件并转到某个工作表,从A11到AC(向下)抓取所有内容,返回到报告并逐个粘贴它,除了它可以&#39 ; t找到下一个可用行,以便将新数据粘贴到先前的数据上。我很确定我使用LastRowSrce和LastRowDest的努力是罪魁祸首,但我无法做到。我在UsedRange上看到了一些帖子,所以我试过了,但也无法做到。 非常感谢任何帮助。

Sub CSReport()

Dim y As Long
Dim Wkb As Workbook
Dim Wks As Worksheet
Dim SFile As String              'srce file
Dim GWB As String                'dest file
Dim R1 As Range
Dim R2 As Range
Dim LastRowSrce As Long     'find last row in srce file
Dim LastRowDest As Long     'find last row in dest file

Set Wkb = thisWorkBook
Set Wks = Wkb.Worksheets("CS Report")

 Wks.Range("A11:AD10000").ClearContents

     Wks.Range("A4").value = "Status at  " & Time & "  " & Format(Date, "Long date")

    y = 11                                                      'start row
    SFile = Wkb.Path & "\"

    GWB = Dir(SFile & "*Audit*")
        Do While Len(GWB) > 0
            workbooks.Open fileName:=SFile & GWB

            LastRowSrce = workbooks(GWB).Worksheets("Audit Plan").Cells(Rows.Count, "A").End(xlUp).Row
            LastRowDest = Wks.Cells(Rows.Count, "A").End(xlUp).Row + 1

                Set R1 = workbooks(GWB).Worksheets("Audit Plan").Range("A" & y & ":AB" & LastRowSrce)
                Set R2 = Wks.Range("A" & y & ":AB" & LastRowSrce)

                R2.value = R1.value
                workbooks(GWB).Close False

                y = y + 1
            GWB = Dir
        Loop

       Wkb.Save

    End Sub

1 个答案:

答案 0 :(得分:0)

Set R2 = Wks.Range("A" & y & ":AB" & LastRowSrce)

你一直在目标表上设置相同的范围......你需要它是动态的。

set R2 = Wks.Range("A" & LastRowDest & ":AB" & LastRowDest+LastRowSrce-11)

试试......

相关问题