Решаю задачу экспорта библиотечных модулей программно с целью создания резервных копий. Думаю, у многих эта задача должна быть решена. Надоело делать вручную.
Формат XML (по умолчанию).
Можно ли экспортировать в виде обычного текста (plain text)?
Например:
For Each libname in BasicLibraries.ElementNames 'or in DialogLibraries
BasicLibraries.exportLibrary ...
<oLibContainer>.exportLibrary(Name$, URL$, Handler As Object)
Имя библиотеки получаем из массива имён, путь – мой. Вместо <Handler> передаю Nothing. Но для формата файла параметра нет.
Скриншот ниже, если это делать вручную, тоже не вносит разнообразия. Однако есть выбор из двух, и этого выбора я не наблюдаю в параметрах метода экспорта.
Третий параметр предназначен для интерактивного взаимодействия с пользователем. Nothing - правильный выбор (для Basic).
Список модулей библиотеки можно получить с помощью конструкции oLib.getElementNames, текст модуля oLib.GetByName(moduleName). Текст каждого модуля можно сохранить в отдельном файле стандартными средствами (через SimpleFileAccess).
Да, спасибо. Модуль читается... Всё остальное есть у Питоньяка в сети.
Dim name$, code$ 'module name & source code (text)
With BasicLibraries.Standard
For Each name In .ElementNames
code = .getByName(name)
Next
End With
Цитата: sokol92 от 7 июня 2021, 15:36через SimpleFileAccess
Sub SaveFile(sFullName$, sContent$)
Dim oSimpleFileAccess As Object, oOutputStream As Object
oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oOutputStream = createUNOService("com.sun.star.io.TextOutputStream")
oOutputStream.setOutputStream(oSimpleFileAccess.openFileWrite(sFullName))
oOutputStream.writeString(sContent)
End Sub
Примечание. Хотя кода и немного, но воспринимается тяжело: без примеров не воспроизвести (не очевидно). В Excel как-то не было таких проблем...
Кстати, код выше вот так (с оператором With) выдал ошибку
With createUNOService("com.sun.star.io.TextOutputStream")
.setOutputStream(oSimpleFileAccess.openFileWrite(sFileName))
.writeString(sContent)
End With