Путь к папке Templates

Автор Ципихович Эндрю, 10 ноября 2024, 10:40

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

Ципихович Эндрю

здравствуйте узнаю его кодом:
Option Explicit
Sub Find_LibreOffice_Templates ()
    ' Путь к домашнему каталогу пользователя
    Dim oUser As String:  oUser = Environ("USERPROFILE")
    ' Путь к папке Templates
    Dim sPath As String: sPath = oUser & "\Documents\LibreOffice\Templates\"
    MsgBox "Путь к папке Templates: " & sPath
End Sub
месседж сообщает:
Путь к папке Templates: C:\Users\q8902\Documents\LibreOffice\Templates\
    но у меня нет папки C:\Users\q8902\Documents\LibreOffice
код НЕ верный, как его подправить? спасибо

bigor

Цитата: Ципихович Эндрю от 10 ноября 2024, 10:40как его подправить?
этот макрос возвращает только имя пользователя, а дальнейший путь дописан руками & "\Documents\LibreOffice\Templates\" и не факт, что он верный. Можете проверить его в сервис - параметры- пути.
Поддержать наш форум можно здесь

Ципихович Эндрю

Цитата: bigor от 10 ноября 2024, 11:06Можете проверить его в сервис - параметры- пути.
и не срослось, указано
C:\Users\q8902\AppData\Roaming\LibreOffice\4\user\template
такой папки тоже НЕТ
Цитата: bigor от 10 ноября 2024, 11:06а дальнейший путь дописан руками & "\Documents\LibreOffice\Templates\" и не факт, что он верный
а какой верный?

sokol92

Вот как я это делаю.

Sub GetTemplatePath
 Msgbox GetPathSetting("Template_writable")
End Sub

Function GetPathSetting(prop)
    Dim oPathSettings As Object
    oPathSettings = getProcessServiceManager().DefaultContext.getValueByName("/singletons/com.sun.star.util.thePathSettings")
    GetPathSetting = oPathSettings.getPropertyValue(prop)
End Function 

При этом полученной папки может и не быть, если шаблоны пользователя ни разу не создавались (изменялись). Поэтому при записи своего шаблона макросом нужно создать папку, если она не существует.

Продвинутые пользователи могут использовать сервис DocumentTemplates.
Владимир.

Ципихович Эндрю

sokol92 - спасибо!!! за код, мне привычней без процедур:
Sub GetTemplatePath()
    Dim oPathSettings As Object
    Dim prop As String
    Dim templatePath As String
    ' Указываем имя свойства, которое нужно получить
    prop = "Template_writable"
    ' Получаем доступ к настройкам путей
    oPathSettings = getProcessServiceManager().DefaultContext.getValueByName("/singletons/com.sun.star.util.thePathSettings")
    ' Получаем значение свойства
    templatePath = oPathSettings.getPropertyValue(prop)
    ' Выводим сообщение с путём к шаблонам
    MsgBox templatePath
End Sub
Цитата: sokol92 от 10 ноября 2024, 15:00При этом полученной папки может и не быть, если шаблоны пользователя ни разу не создавались (изменялись). Поэтому при записи своего шаблона макросом нужно создать папку, если она не существует.
тогда НЕ понятно, когда я создаю файл я вижу его название "Без имени 1" и он с какого шаблона загрузился?

sokol92

Посмотрите пункт Меню / Файл /  Шаблоны / Управление шаблонами.
Фильтр: Текстовые документы.

Там есть шаблон по умолчанию (отмечен в левом столбце специальным значком)?
Владимир.

Ципихович Эндрю

Цитата: sokol92 от 10 ноября 2024, 15:37Там есть шаблон по умолчанию (отмечен в левом столбце специальным значком)?
ну так я это сделал, его отредактировал, специально в нём неприличное слово написал
Цитата: Ципихович Эндрю от 10 ноября 2024, 15:26когда я создаю файл я вижу его название "Без имени 1"
и этого НЕ приличного слова нет, почему?

sokol92

Провел эксперимент.
1. Заходим в Управление шаблонами, выделяем шаблон, в контестном меню этого шаблона выполняем пункт "Установить по умолчанию".
2. Создаем новый документ: Меню / Файл / Создать / Текстовый документ.

Документ открывается в соответствии с только что установленным шаблоном по умолчанию.
Владимир.

Ципихович Эндрю

sokol92 - спасибо повторю эксперимент