#vba #powerpoint
#vba #powerpoint
Вопрос:
Я пытаюсь сохранить файл PowerPoint с другим именем файла в соответствии с датой следующего четверга. Это означает, что если я сохраню файл 18.10.2016 (что соответствует вторнику), то имя файла будет 20/10/2016 (что соответствует следующему четвергу).
Это то, что я написал, но это кажется ложным:
Sub SaveAll()
Dim prs As Presentation
Dim Todate As Date
On Error Resume Next
For Each prs In Presentations
Todate = DateValue(Now)
oldWeekDay = Weekday(Todate)
Select Case oldWeekDay
Case 1
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 4.pptm"
Case 2
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 3.pptm"
Case 3
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 2.pptm"
Case 4
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 1.pptm"
Case 5
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate.pptm"
Case 6
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 6.pptm"
Case 7
prs.saveAs "C:UsersMoezDesktopMacro_ProjectTodate 5.pptm"
End Select
Next prs
End Sub
Спасибо за вашу помощь
Комментарии:
1. «кажется ложным» что кажется ложным?
2. Во-первых, «20/10/2016» не является допустимым именем файла (по крайней мере, в Windows). Вы не можете использовать / в именах файлов. Во-вторых, вы используете статические строки для имен, в то время как вы должны «создать» имя файла с помощью конкатенации (с
amp;
) и преобразования даты в строку (что обычно выполняется сFormat
помощью функции).3. И последнее, вы сохраняете все
prs
Presentations
под тем же именем, они будут перезаписывать друг друга.
Ответ №1:
Чтобы добавить дни к дате, используйте DateAdd
. Вы можете рассчитать количество дней для добавления отмены отправки (7 numberOfDayYouWant - numberOfDayYouHave) Mod 7
Dim nextThursday As Date
Dim strDate As String
Dim Todate As Date
Todate = Date 'the "Date" function returns the date portion of "Now"
'find the next thursday
nextThursday = DateAdd("d", (12 - Weekday(Todate)) Mod 7, Todate)
'make a string
strDate = Format(nextThursday, "yyyy-mm-dd") 'edit format as you wish
'now save the presentation, e.g.
'Set prs = someting
prs.SaveAs "C:UsersMoezDesktopMacro_Project" amp; strDate amp; ".pptm"
Убедитесь, что вы не сохраняете свои презентации под тем же именем
Комментарии:
1.
Todate = DateValue(Now)
может быть заменен наTodate = Date()
2. Верно, я оставил его, потому что это был OP, и я не хотел вызывать путаницу между функцией и типом