首页 > 解决方案 > 如何修改录制的 VBA 宏以每周工作?

问题描述

我正在录制 VBA 宏以使涉及大量手动任务的每周报告运行得更快,但我有一些问题。我必须复制、过滤等 10 个不同的文件。

基本上宏是什么:我选择第一行,应用过滤器,过滤它,然后用 ctrl+shit 选择它,复制并粘贴到另一个文件中,然后在另一个文件中有一个带有时间序列的新列日期,我 ctrl+d,将日期更改为这周(总是 +7 天),然后将其拉到数据集的底部。

1,如果我用ctrl+shift+right然后left进行记录,那么即使每周有不同的行数,也应该每周选择整个数据集,对吗?

2,下周运行宏的时候,是不是一定要打开两张表,还是会自动打开这个2.表?

3,另一个文件是时间序列文件,所以我必须修改最后一列中的日期,但我的问题是,如果我在录制宏时输入日期,每次运行宏时都会输入该日期,如何修改录制的宏以将日期增加 7 天?

4、文件名每周都会变化来代表日期,例如:本周xy20200801,但下周将是xy20200808,这是导致宏在上周文件中运行的问题吗?如果是,我可以更改某些内容以使其始终在当前周文件中运行吗?

这是我对 2 个测试文件所做的记录:

Sub TEST()
'
' TEST Makro
'

'
    Range("A1:D1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$D$5").AutoFilter Field:=3, Criteria1:="w"
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("TIMEseries20200801.xlsx").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    Range("A5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E5").Select
    Application.CutCopyMode = False
    Selection.FillDown
    ActiveCell.FormulaR1C1 = "2020.08.01"
    Range("E6").Select
    Selection.FillDown
    Windows("Sheet1.xlsx").Activate
End Sub

标签: excelvba

解决方案


推荐阅读