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

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

21 Январь 2018, 07:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как открыть документ  (Прочитано 215 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alexmn31
Новичок
*
Offline Offline

Сообщений: 7


« Стартовое сообщение: 10 Январь 2018, 11:58 »

Подскажите как открыть документ с диска в макросе libreoffice.

Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 390


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 10 Январь 2018, 12:29 »

В стандартной библиотеке Tools есть для этого специальная функция - OpenDocument.
У неё три параметра - URL документа, массив аргументов для открытия и не обязательный логический параметр bDisposable
Прежде чем лезть на диск за документом, функция проверяет нет ли его среди уже открытых. Если есть, то просто возвращает этот документ, а если нет - пытается открыть его по указанному пути. bDisposable как раз и показывает - можно ли закрыть документ после окончания работы макроса (если уже кто-то его открыл, то закрывать, наверное, не стоит)
То есть весь код для открытия файла выглядит приблизительно так:

Код:
Dim argOpenFile(0) as new com.sun.star.beans.PropertyValue
argOpenFile(0).Name = "Hidden"
argOpenFile(0).Value = True
GlobalScope.BasicLibraries.LoadLibrary("Tools")
fName = ConvertToURL(sFileName)
If FileExists(fName) Then
getDoc = OpenDocument(fName, argOpenFile)
Else
MsgBox("Файл с именем '" + sFileName + "' не найден!", 32, "Ошибка в имени файла")
EndIf
If IsNull(getDoc) Or IsEmpty(getDoc) Then Exit Sub ' Почему-то не удалось открыть
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
economist
Ветеран
*****
Offline Offline

Сообщений: 790


« Ответ #2: 10 Январь 2018, 13:25 »

Также есть весьма компактные способы из "мира" VBA, например так в Calc:

Код:
Option VBASupport 1
Sub OpenXLSODS
Workbooks.open "C:\DOWNLOAD\Список.xls"
End sub
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
alexmn31
Новичок
*
Offline Offline

Сообщений: 7


« Ответ #3: 12 Январь 2018, 09:16 »

Также есть весьма компактные способы из "мира" VBA, например так в Calc:
Эт получается, что можно в libre вставоять любрй код из vba или не совсем так  или совсем не так?
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 790


« Ответ #4: 12 Январь 2018, 09:48 »

VBA-rод будет в Calc работать почти любой, связанный с базовой объектной моделью Excel (Приложение - Книги - Рабочая книга - Листы - Активный лист - Ячейки - Диапазоны - Выделение - Содержимое ячейки - Формула/Текст - Символы итп). К сожалению, единого центра документации по совместимости кода нет, хуже того - полно устаревшей информации. Но это лучше чем ничего.

Не будет работать VBA-код, связанный с контролами, элементами управления ActiveX, событиями.
Этот код придется переписывать под StarBasic и его поведение.

Чтобы еще больше в Calc cблизить VBA и SB-проекты (код в листах книги итп) - нужно вверху модуля написать 2 строки, а в коде 1 раз вызвать ThisComponent.BasicLibraries.VBACompatibilityMode=true, сохранить файл в ODS. Например:

Код:
Option VBASupport 1
Option Compatible
'-----------------------------------------------
Function СУММОЧКА(a as range) as double
ThisComponent.BasicLibraries.VBACompatibilityMode=true  
For each n in a
s = s + n.value
Next n
СУММОЧКА=s
End Function
 

Если вспомнить что благодаря MS Excel компьютеры пришли в бизнес, стали массовыми и персональными, а затем вернулись в дома и изменили мир, а сам Excel до сих пор самое популярное приложение в мире (из больших) - то коллективное копание в сторону VBA в Calc является тем чудом, что может изменить мир СПО с его, возможно, лучшим продуктом в лице OpenOffice|LibreOffice. Пятнично, но по существу.   
« Последнее редактирование: 12 Январь 2018, 10:04 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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