VBA - Создать и сохранить в папке в соответствии с датой

1344
Lenny

Мне нужно сделать пару вещей, которые кажутся простыми, но мне трудно понять, как это реализовать.

Мне нужно создать папку, используя сегодняшнюю дату. Эта часть в порядке. Затем мне нужно сохранить файл, используя текст и сегодняшнюю дату (также хорошо).

Меня привлекло то, что мне нужно сохранить новый файл в новую папку. Как можно сохранить файл с текущей датой и сохранить его в новой папке с текущей датой? (если бы путь к файлу был постоянным, я бы это сделал, но когда часть пути меняется в зависимости от даты, я не знаю, как это сделать)

Это то, что я пытался, но это не работает. Я получаю следующую ошибку: 1004: ошибка приложения или объекта.

Sub filesave()  ActiveWorkbook.SaveAs ("S:\HR\TM\" & Format(Now(),"dd.mm.yyyy") & "\SOX recon " & Format(Now(), "dd.mm.yyyy") & ".xlsx")  End Sub 

Это код для создания папки (которая отлично работает):

Sub FolderCreate()  MkDir "S:\HR\TM\" & Format(Now(), "dd.mm.yyyy")  End Sub 

Обратите внимание, что путь к файлу / каталог был немного изменен / упрощен для безопасности.

0
Где вы создаете папку? Вы пытались отладить код, отображая хотя бы строку, которую вы генерируете? harrymc 5 лет назад 0
@harrymc - папка уже создана ранее. Этот код работает отлично (он создает новую папку в папке «TM» с текущей датой в этом формате dd.mm.yyyy). Моя проблема в том, что каждый раз, когда это выполняется, имя папки будет отличаться. Это всегда будет названо в честь текущей даты, хотя. Lenny 5 лет назад 0
Отличается от чего? Можете ли вы показать другой код? Почему вам нужно дважды пересчитать имя? harrymc 5 лет назад 0
@harrymc каждую неделю будет создаваться папка. Имя будет отличаться каждый раз, так как это папка с датами (сегодня она будет называться 29.11.2018; на следующей неделе она будет называться 06.12.2018; и так далее). Таким образом, папка, в которой будет сохранен файл, будет отличаться каждую неделю и не будет определена до завершения процесса. Я добавлю код создания папки ... Lenny 5 лет назад 0

1 ответ на вопрос

0
harrymc

Просто предположение:

fname = "S:\HR\TM\" & Format(Now(),"dd.mm.yyyy") & "\SOX recon " & Format(Now(), "dd.mm.yyyy") & ".xlsx" MsgBox fname ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlOpenXMLWorkbook 

Похожие вопросы