Страницы: 1
RSS
Сохранить открытый файл посредством VBA (Ctrl + S)
 
Добрый день!

Требуется обычное сохранение открытого файла (xltm) по нажатию на кнопку. Аналогично CTRL + S, только без выбор формата, а сразу в xltm.
Использовал ActiveWorkbook.Save, но файл сохранялся в другую директорию и с расширением xls. По умолчанию в настройках стоит сохранение в .xls формате.
Возможно ли не меняя настройку сохранить открытый файл в нужном формате - xltm?
Изменено: alex55116 - 20.04.2020 15:30:29
 
А что по этому поводу говорит макрорекордер?
 
Цитата
Юрий М написал:
А что по этому поводу говорит макрорекордер?
При обычном сохранении - ActiveWorkbook.Save.
А вот при сохранении с выбором:

Скрытый текст

Тогда из этого вытекает второй вопрос: как узнать путь открытого файла, чтобы при сохранении через ActiveWorkbook.SaveAs он спокойно перезаписался?
 
Save и SaveAs - разные вещи.
По второму вопросу: thisworkbook.Path - путь к файлу, из которого запущен макрос.
===
Никогда не встречал, чтобы команда Save меняла формат.
 
Цитата
Юрий М написал:
Save и SaveAs - разные вещи.По второму вопросу: thisworkbook.Path - путь к файлу, из которого запущен макрос.
Получилось вот так через ActiveWorkbook.SaveAs:
Цитата
   Application.DisplayAlerts = False
   PathName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
   ActiveWorkbook.SaveAs Filename:=PathName _
       , FileFormat:=xlOpenXMLTemplateMacroEnabled, Password:="", _
       WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
   Application.DisplayAlerts = True

Но когда открываю файл заново и пытаюсь сразу же сохранить, то выскакивает ошибка:

Изменено: alex55116 - 20.04.2020 16:37:11
 
Цитата
alex55116 написал:
Требуется обычное сохранение открытого файла (xltm)
При обычном открытии файла xltm создается новая книга, не имеющая ThisWorkbook.Path
Либо явно указывайте путь, либо используйте Application.FileDialog.
 
Цитата
RAN написал:
При обычном открытии файла xltm создается новая книга, не имеющая ThisWorkbook.PathЛибо явно указывайте путь, либо используйте Application.FileDialog.
Проще, конечно, в xlsm перевести. Так и сделаю.
Спасибо за ответ!
Страницы: 1
Наверх