Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Май 2020, 11:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Сохранение текущего документа в указанную папку макросом OOBasic  (Прочитано 1765 раз)
0 Пользователей и 1 Гость смотрят эту тему.
quarantine85
Участник
**
Offline Offline

Сообщений: 8


« Стартовое сообщение: 4 Апрель 2020, 12:43 »

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

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

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

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

Пол: Мужской
Сообщений: 912


« Ответ #1: 4 Апрель 2020, 14:49 »

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

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

Цитата:
Листинг 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
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #2: 6 Апрель 2020, 07:15 »

Код:
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()) ' Сохраняем.
« Последнее редактирование: 6 Апрель 2020, 07:16 от Rafik » Записан
quarantine85
Участник
**
Offline Offline

Сообщений: 8


« Ответ #3: 15 Апрель 2020, 14:33 »

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

Только нужно было еще описать массив args().
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 912


« Ответ #4: 15 Апрель 2020, 14:38 »

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

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

Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!