Сохранение текущего документа в указанную папку макросом OOBasic

Автор quarantine85, 4 апреля 2020, 12:43

0 Пользователи и 1 гость просматривают эту тему.

quarantine85

Доброе время суток!

Подскажите, пожалуйста, как реализовать следующую задачу на OOBasic:

В определенный момент в макросе сделать копию открытой книги в папку, допустим TEMP, которая в той же папке, что и книга.
По сути, делается бекап.

Не могу понять, как получить полный путь, где лежит открытая книга (он может меняться)?
И как реализовать сохранение под новым именем в папку рядом с ней?

bigor

Как узнать путь к запущенному файлу, посмотрите здесь, и ниже почитайте.

Сохранение как то так

ЦитироватьЛистинг 224. Экспорт документа в указанный формат файла Microsoft Excel.
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "FilterName"
args(0).Value = "MS Excel 97"
'Я очень взволнован, какой фильтр
'мы будем использовать?
'Ох, формат Excel 97!
ThisComponent.storeToURL("file:///c:/one.xls", args())
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Rafik

cPath_sep = GetPathSeparator() ' Возьмём разделитель пути
cPath = ConvertFromURL(Thiscomponent.URL) ' Получим URL документа и превратим его в строку
aPuti = split(cPath,cPath_sep) ' Разобъем по разделителю пути
cFlNm = aPuti(Ubound(aPuti))  ' Получим имя файла текущего документа (без пути)
aPuti(Ubound(aPuti)) = "TEMP"  ' Заместим имя файла именем подпапки "TEMP"
cPath = join(aPuti,cPath_sep)  ' Объединим путь в строку
       
cFullName = cPath + cPath_sep + cFlNm ' Полное имя файла для сохранения в подпапке Temp в текущей папке
URL1 = ConvertToUrl(cFullName) ' Преобразуем строку в URL для использования в команде сохранения
ThisComponent.storeToURL(URL1, args()) ' Сохраняем.

quarantine85

Спасибо большое! Сработало.

Только нужно было еще описать массив args().

bigor

Цитата: quarantine85 от 15 апреля 2020, 14:33Только нужно было еще описать массив args().
А это что?
Цитироватьargs(0).Name = "FilterName"
args(0).Value = "MS Excel 97"

Хотя если сохранять в ods, то и описывать не надо

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут