【发布时间】:2019-06-28 19:03:30
【问题描述】:
我有一个要求,即每周星期五一次,我需要将每周(周一至周五)每天生成的工作簿中的一些数据提取到新工作簿中的每周日期摘要中。新工作簿将是每周的累积视图,当数据粘贴到汇总表时,日期会在周五自动填充。
我需要一些关于如何从逻辑上计算出当前日期的指针,然后搜索以找到该星期一的第一个文件(但包括星期五的文件),然后将该周的日期范围插入到旁边的相应单元格中复制的数据。
我发现其他人的各种帖子都希望做类似的事情,我已经尝试在此基础上开始工作以产生我想要它做的事情。但是,我没有接受过 VBA 培训,所以我在“尽最大努力”的基础上尝试一切。下面是我编写的代码,它目前只是打开了目录中的最后一个文件。我还有一个单独的选项卡,其中包含我希望在运行宏时考虑到的公共假期。显然,我有很多事情要做,如果我能提供任何关于我应该尝试的提示和指示,我将不胜感激。
Sub WeeklyUpdate()
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long
Dim LastPreviousWorkday As Date
'date format to use and where to lookup the bank holidays
LastPreviousWorkday = Application.WorksheetFunction.WorkDay(Date, -1)
LastPreviousWorkday = Format$(LastPreviousWorkday, ("yyyy-mm-dd"))
LastPreviousWorkday = Application.WorksheetFunction.WorkDay(Date, -1, Worksheets("PublicHolidays").Range("A:A"))
'This is where I want it to opens the last 5 days of workbooks from today's date including today e.g. Monday-Friday, report is always run on a Friday
Workbooks.Open "W:\Inventory\Inventory Support\3. Reporting\Daily\Daily Fails Report\Daily Fails Report " & Format(Date, "yyyy-mm-dd") & ".xlsb"
'Set variables for copy and destination sheets
Set wsCopy = Workbooks("Daily Fails Report 2019-06-26.xlsb").Worksheets("Daily Fails Report (National)")
Set wsDest = Workbooks("Weekly Issues Summary.xlsb").Worksheets("CurrentPeriodSummary")
'Find last used row in the copy range based on data in column O
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "O").End(xlUp).Row
'Find first blank row in the destination range based on data in column B
'Offset property moves down 1 row to exclude headers
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Offset(1).Row
'Copy data range excluding the grand total which is always the last row (so use -1 to select the last row above it) & Paste Data into Summary
wsCopy.Range("O9:Q" & lCopyLastRow - 1).Copy _
wsDest.Range("B" & lDestLastRow)
End Sub
我希望上面的输出能够用每周五行数据更新我的摘要工作簿,每个数据的日期对应于文件名称中的日期。
【问题讨论】: