SaveAs VBA Excel

#vba #excel

#vba #excel

Вопрос:

Я пытаюсь автоматически сохранить документ с определенным именем файла, за которым следует вчерашняя дата, используя функцию Now().

Каждый раз, когда я запускаю код, я получаю сообщение «Ошибка компиляции: ожидается: разделитель списка или)», и я, похоже, не могу разобраться с проблемой.

 'Saves file as an xlsx in directory
ActiveWorkbook.SaveAs Filename:= _
"P:DesktopPrior Day JournalsTueday - FridayPrior Day Journal" _
amp; Format(Now() –1,“DD-MMM-YYYY”)“.xlsx” _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
  

Кажется, что проблема всегда связана с значением -1 в коде, которое должно быть возвращено на день для имени файла.

Заранее спасибо

Комментарии:

1. К вашему сведению, в вашем коде есть два типа кавычек ( " и / ). Не уверен, что это проблема с копированием / вставкой сюда или на самом деле в коде.

2. @BruceWayne Честно говоря, я думаю, что это были два разных типа, откуда я получил часть кода ранее. Итак, проблема с копированием и вставкой, прежде чем перейти сюда!

Ответ №1:

На самом деле ошибка заключается в том, что вы использовали не знак минус - , а символ UNICODE Короткое ТИРЕ.


Другим подходом было бы использовать для этого функцию DateAdd.

У вас также отсутствует amp; строка конкатенации и отсутствует , для разделения параметров.

 'Saves file as an xlsx in directory
ActiveWorkbook.SaveAs Filename:= "P:DesktopPrior Day JournalsTueday - FridayPrior Day Journal" _
amp; Format(DateAdd("d", -1, Now()),"DD-MMM-YYYY") amp; ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
  

Комментарии:

1. Не было проблем с тем, как у него была дата раньше. Вы можете Format(Now() -1, "DD-MMM-YYYY") , и это будет работать просто отлично. Попробуйте это в вашем непосредственном окне, вы получите yesterday в правильном формате. Проблемы заключались в том, что строка просто не объединялась и не хватало запятой.

2. Оба работали абсолютно нормально, но сначала попробовал ваш @VincentG, и это сработало, спасибо!

3. Я отредактировал свой ответ, ваша проблема возникла из-за использования символов Юникода.