Добрый вечер. Пытаюсь решить такую задачу. В книге есть лист "Template" и лист с названием по дате: 2018-01-01 (год-месяц-число). Как макросом скопировать лист "Template" и переименовать, чтобы в названии прибавлялось 7 дней к дате предыдущего листа, т.е. лист с названием 2018-01-08, затем 2018-01-15 и т.д. Т.е. на каждую неделю новый лист. Пример приложил.
Добрый вечер. Пытаюсь решить такую задачу. В книге есть лист "Template" и лист с названием по дате: 2018-01-01 (год-месяц-число). Как макросом скопировать лист "Template" и переименовать, чтобы в названии прибавлялось 7 дней к дате предыдущего листа, т.е. лист с названием 2018-01-08, затем 2018-01-15 и т.д. Т.е. на каждую неделю новый лист. Пример приложил.drugojandrew
И очень просто. 1. Преобразуем текст "2018-01-01" (имя листа) в дату. 2. Прибавляем к полученной дате интервал (7 дней) 3. Присваиваем новому листу имя Format((дата из п2), "yyyyy-mm-dd")
Можно извратиться, и прибавить интервал к дню, но тот опять возникнет проблема корректной даты...
И очень просто. 1. Преобразуем текст "2018-01-01" (имя листа) в дату. 2. Прибавляем к полученной дате интервал (7 дней) 3. Присваиваем новому листу имя Format((дата из п2), "yyyyy-mm-dd")
Можно извратиться, и прибавить интервал к дню, но тот опять возникнет проблема корректной даты...RAN
Sub CopyList() Dim iName As String Dim iDate As Date iName = Worksheets(Worksheets.Count).Name iDate = DateSerial(Split(iName, "-")(0), Split(iName, "-")(1), Split(iName, "-")(2)) iDate = iDate + 7 Sheets("Template").Copy After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = Format(iDate, "yyyy-mm-dd") End Sub
[/vba]
[vba]
Код
Sub CopyList() Dim iName As String Dim iDate As Date iName = Worksheets(Worksheets.Count).Name iDate = DateSerial(Split(iName, "-")(0), Split(iName, "-")(1), Split(iName, "-")(2)) iDate = iDate + 7 Sheets("Template").Copy After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = Format(iDate, "yyyy-mm-dd") End Sub