使用Excel VBA保存文件名包含下个星期三或星期六(以较早者为准)的文件,在文件中指定的date之后或之后

我已经search了所有的答案,但没有find我正在寻找具体。

从本质上讲,我有一个macros编辑和保存模板文件在一个新的名称下,前缀和(当前),基于今天的date最近的星期六的date。 这对于过去的用途来说没什么问题,但是现在我需要按照文件中选定的date,在星期六或星期三(以先到者为准)做同样的事情。 例如,如果文件中的date是8月3日星期四,文件将保存为“前缀 – 8月5日”,而如果是8月1日星期二,文件将保存为“8月2日前缀”。 还需要保存在同一天,如果我保存在星期三或星期六。

不知道这是甚至可能的。 当前的代码行(保存如下星期六)如下:

ActiveWorkbook.SaveAs Filename:="C:\Users\Andrew\Downloads\Test\" & "Predictions - " & Format(Date + 7 - Weekday(Date, vbSunday), "mmmm dd") & ".xlsm"

文件中的date在A17。

第一次我在这里的任何地方问过一个问题 – 自从我开始搞VBA的时候,其他人的回答给了我很好的帮助,所以我希望有人能做这个工作。

 If Weekday(Date, vbSunday) < Weekday(Date, vbThursday) Then ActiveWorkbook.SaveAs Filename:="C:\Users\Andrew\Downloads\Test\" & "Predictions - " & Format(Date + 7 - Weekday(Date, vbThursday), "mmmm dd") & ".xlsm" Else ActiveWorkbook.SaveAs Filename:="C:\Users\Andrew\Downloads\Test\" & "Predictions - " & Format(Date + 7 - Weekday(Date, vbSunday), "mmmm dd") & ".xlsm" End If 

这会修改您现有的代码,以计算下一个星期三和下一个星期六,然后解决问题,然后应用该代码。

用法

getWorkBookName(#7 /二千○十七分之二十七#, “C:\ Users \用户安德鲁\下载\testing\”)

 Function getWorkBookName(DateOf As Date, RootDirectory) If Weekday(DateOf, vbSunday) <= 4 Then getWorkBookName = RootDirectory & "Predictions - " & Format(DateOf + vbWednesday - Weekday(DateOf, vbSunday), "mmmm dd") & ".xlsm" Else getWorkBookName = RootDirectory & "Predictions - " & Format(DateOf + vbSaturday - Weekday(DateOf, vbSunday), "mmmm dd") & ".xlsm" End If End Function