2013-08-09 3 views
0

Я хочу сохранить книгу Excel в конце макроса с динамической датой в имени файла. Я хочу, чтобы имя содержало предыдущий месяц. Например, если макрос запускается 8/9/2013, я хочу сохранить файл с указанным 7/2013. Это то, что у меня есть, и он отлично работает, если я использую текущий месяц. Но, если я запустил это 8/9/2013, я бы хотел, чтобы файл сохранялся как «Monthly Report 2013-07».VBA для сохранения рабочего листа с динамической датой

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 

Спасибо!

ответ

1

Try:

dt = Format(DateAdd("m", -1, Now), "yyyy_mm") 
+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 #) является 1 декабря 1999 года

+0

я мог бы попытаться получить это вниз, а я уверен, что это работает, это просто мое невежество, что я не могу понять это ... Похоже, что это может быть полезно в будущем, но я не мог заставить его работать сразу, поэтому я пошел другим методом. Спасибо хоть! –