【问题标题】:Copy and paste rows from one WB to another, with different WB names weekly将行从一个 WB 复制并粘贴到另一个,每周使用不同的 WB 名称
【发布时间】:2017-03-30 14:05:05
【问题描述】:

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

我每周五运行此报告,并在过去 7 天内一次提取 1 天数据。源 WB 的名称会随着我拉取的每一天而改变,看起来像这样:3 月 23 日星期四的 20170323050000。

目的地WB的名称每周都会发生变化:WK12、WK13、WK14等。

当我再次运行我的报告时,是否有不需要每周更改的宏?

更新

所以我玩了一点,这几乎完全符合我的需要,但我仍然回到原始问题的最后一部分,我可以做些什么来改变“Windows(WK13 RIP. xlsm").Activate " 到 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

结束子

【问题讨论】:

    标签: vba excel copy-paste excel-2013


    【解决方案1】:

    我认为这就是您正在寻找的一个警告。您说您滚动到目标工作簿的底部以粘贴复制的范围,但我无法知道底部在哪里,所以我只是将目标设置为 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
    

    【讨论】:

    • 将此与函数结合起来:WorksheetFunction.WeekNum(Date),您将得到更完整的答案。此外,您可以使用文件名的前 8 个字符,而不是使用 Date,转换为日期。
    • rng.Select 完全没用。
    • 所以我是 VBA 的新手,我所知道的一切都来自其他同事和谷歌。我将如何“为 WK 之后的数字传递一个变量”?
    • 如果我们可以为您的 WK# 创建一个公式,可能会更容易。第 1 周是什么时候?另一种选择是只有一个特定的命名范围,您可以在其中输入 wk#,它总是会从那里拉出。
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2016-08-08
    • 2016-09-24
    相关资源
    最近更新 更多