VBA用于保存带有动态日期的工作表

时间:2013-08-09 18:58:25

标签: excel-vba vba excel

我想在宏的末尾保存一个excel工作簿,并在文件名中包含动态日期。我希望名称包含上个月。例如,如果宏在8/9/2013运行,我希望文件在指定的7/2013中保存。这就是我所拥有的,如果我使用当前月份它会很有效。但是,如果我在2013年8月9日运行此操作,我希望该文件另存为“2013-07月度报告”。

ActiveWorkbook.SaveAs "\\FULL PATH\Monthly Report " & Format(Date, "yyyy-mm") & ".xls"

End Sub

我之前也使用过这样的东西,但是也无法减去一个月:

wbNam = "Monthly Report_"
dt = Format(CStr(Now), "yyyy_mm")
ActiveWorkbook.SaveAs Filename:= wbNam & dt
End Sub

谢谢!

2 个答案:

答案 0 :(得分:1)

只需使用此功能

Public Function PreviousMonth(ByVal d As Date) As Date
PreviousMonth = DateSerial(Year(d), Month(d) - 1, Day(d))
End Function

DateSerial非常聪明,可以支持零或负月份数字。 换句话说,PreviousMonth(#1/1/2000#)是1999年12月1日。

答案 1 :(得分:1)

尝试:

dt = Format(DateAdd("m", -1, Now), "yyyy_mm")