所以我试图从我过滤的一个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
答案 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