Макрос VBA для сохранения файла PowerPoint с другим именем файла в соответствии с датой

#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, и я не хотел вызывать путаницу между функцией и типом