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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Libre Office Basic Как найти путь к папке файла, из которого запущен макрос.  (Прочитано 455 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ost
Форумчанин
***
Offline Offline

Сообщений: 126


« Стартовое сообщение: 13 Февраль 2021, 13:56 »

Доброго.

Собственно сабж.
Пока никаких мыслей нету, кроме как выпилить из текстовой строки (возвращаемой, например, по  "ThisComponent.Url") с полным путем к файлу нужный кусок без самого имени файла.

Может есть способ проще, что-нибудь похожее на екселевское "sPath = ThisWorkbook.Path"?
Спасибо.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #1: 13 Февраль 2021, 14:10 »

Вот обсуждали когда то
Записан

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

Сообщений: 126


« Ответ #2: 13 Февраль 2021, 14:38 »

Да. Видел. Но как получить путь. Без файла.
Я, конечно, смогу выпилить его с помощью возможностей SB по работе со строками, но нет ли пути проще?
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #3: 13 Февраль 2021, 15:21 »

Придется выпиливать - это легко. Альтернатива - библиотека "Tools". Не забудьте, что свойство Url (или Location) возвращает полный путь в URL-формате.
Update. Нашел у себя подходящую функцию:
Код:
' Возвращает путь к папке для сохраненного документа.
' Если документ не сохранен, то возвращается пустая строка.
' - oDoc документ Office
' - IsNative если True, то значение возвращается в формате операционной системы, иначе в URL-формате (умолчание False)
Function Doc_Path(ByVal oDoc, Optional ByVal IsNative As Boolean) As String
  Dim s As String, arr
  If IsMissing(IsNative) Then IsNative=False
  s=oDoc.url
  If s="" Then Exit Function
  arr=Split(s, "/")
  Redim Preserve arr(Ubound(arr)-1)
  s=Join(arr, "/")
  If IsNative Then s=ConvertFromUrl(s)    
  Doc_Path=s
End Function
« Последнее редактирование: 13 Февраль 2021, 19:03 от sokol92 » Записан

Владимир.
ost
Форумчанин
***
Offline Offline

Сообщений: 126


« Ответ #4: 13 Февраль 2021, 20:52 »

Спасибо. Надо подумать, что еще понадобится.

Уже пробовал ранее писать макросы в LO. Потом пришлось писать на VBА. Теперь вот снова нужен LO.
За то время, что использовал ексель сильно расслабился. Все быстро, море инфы.

По привычке и тут хотел накостылять по-быстрому более-менее рабочее. Но не.  =)
Тут надо другим путем. Написать сначала кучу функций и вспомогательных процедур, а потом уж...
Времени только чертовски мало. =( И не программист нифига.
« Последнее редактирование: 13 Февраль 2021, 20:56 от ost » Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #5: 13 Февраль 2021, 22:05 »

Если покопаться, то многое уже написано
Код:
doc=ThisComponent
fold=convertToURL(replace(convertFromURL(doc.URL),doc.Title,""))
Записан

Поддержать разработчиков 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!