每周都会创建一个工作簿,其中“w”是周数。
当当前工作簿用于“31”周时,我希望从“30”周的关闭工作簿中获取数据。
我有这个。
Sub Import_Data()
Dim rng As Range
Dim WB2 As Workbook
Dim FName As String
FName = Application.ActiveWorkbook.Path + "w"
Set WB2 = Workbooks.Open(Filename:=FName)
ThisWorkbook.ChampSpecific.Range("L3:O6").Value = WB2.Worksheets(1).Range("M3:P6").Value
WB2.Close
End Sub
宏将从“31”周工作簿中的一个按钮运行。
我想代码会起作用,但我不知道该行在FName = Application.ActiveWorkbook.Path + "w"
当前周数之前获取周数的语法是什么。
一般来说,就前一周而言,您需要这样的东西:
"AIMS_Report_w" & Format((WorksheetFunction.WeekNum(Now) - 1), "00")
甚至
"AIMS_Report_w" & WorksheetFunction.WeekNum(Now) - 1
如果你不需要格式化。
否则,如果您想提供上一个当前报告的名称并从中获取上一个报告,这样的操作会很有用:
Option Explicit
Public Function GeneratePreviousWeek(strCurrentWeek As String) As String
Dim lngPrevious As Long
Dim strResult As String
lngPrevious = Right(strCurrentWeek, 2)
lngPrevious = lngPrevious - 1
strResult = Left(strCurrentWeek, Len(strCurrentWeek) - 2)
GeneratePreviousWeek = strResult + Format(lngPrevious, "00")
End Function
Sub TestMe()
Debug.Print GeneratePreviousWeek("AIMS_Report_w05")
Debug.Print GeneratePreviousWeek("AIMS_Report_w15")
End Sub
这是您在直接窗口中看到的内容:
AIMS_Report_w04
AIMS_Report_w14
该GeneratePreviousWeek
函数采用报告名称的最后两个字符,返回一个带有-1
. 应使用以下内容:
01
,02
01
它返回00
。否则,您应该小心,有时53
一年中可能有几周,因此您还需要提供年份。53
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句