将行从一个WB复制并粘贴到另一个WB,每周使用不同的WB名称

时间:2017-03-30 14:05:05

标签: vba excel-vba copy-paste excel-2013 excel

所以我试图从我过滤的一个WB中复制数据,然后将其粘贴到前一行底部的另一个WB中。

我每周五运行此报告,并在过去7天内一次提取数据1天。源WB的名称将在我拉出的每一天都会发生变化,如下所示:20170323050000,即3月23日星期四。

目的地WB的名称将每周更改:WK12,WK13,WK14等。

在再次运行报告时,是否有一个我不必每周更改的宏?

更新

所以我玩了一点点,这几乎完全符合我的需要但是我仍然回到原始问题的最后一部分,有什么我可以做的来绕过改变“Windows(WK13 RIP。 xlsm“)。我每周都会激活”WK14,WK15,WK16等等吗?“

Sub PackFilterl()

Range("A1").AutoFilter Field:=15, Criteria1:="EACH"

Range("A1").AutoFilter Field:=16, Criteria1:="Total"

Dim rng As Range
    Set rng = ActiveSheet.UsedRange

    Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1)

    rng.Select
    rng.Copy
        Windows("WK13 RIP.xlsm").Activate
        Sheets("AFE Pack Volume").Select
            lMaxRows = Cells(Rows.Count, "A").End(xlUp).Row
            Range("A" & lMaxRows + 1).Select

ActiveSheet.Paste

End Sub

1 个答案:

答案 0 :(得分:0)

我认为这是你正在寻找的一个警告。你说你滚动到目标工作簿的底部以粘贴复制的范围,但我没有任何方法知道底部的位置,所以我只是将目标设置为A1。您可以为目标范围添加另一行和InputBox()调用,或者编写一些代码来确定底部的位置。下面的代码还假定目标工作簿尚未打开。

Sub PackFilterl()

    Dim WkShtNum As Integer
    Dim WkBkName As String
    Dim DestinationWorkbook As Excel.Workbook
    Dim DestinationWorksheet As Excel.Worksheet
    Dim rng As Range


    WkBkName = InputBox("Enter the Path of your destination Workbook")
    WkShtNum = InputBox("Enter the week number for the destination worksheet")

    Range("A1").AutoFilter Field:=15, Criteria1:="EACH"

    Range("A1").AutoFilter Field:=16, Criteria1:="Total"

    Set rng = ActiveSheet.UsedRange

    Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1)

    rng.Select
    rng.Copy

    Set DestinationWorkbook = Workbooks.Open(WkBkName)
    Set DestinationWorksheet = DestinationWorkbook.Worksheets("WK" & CStr(WkShtNum))
    Set rng = DestinationWorksheet.Range("A1")
    rng.PasteSpecial (xlPasteValues)


End Sub