Узнать через макрос версию офиса (MSOffice, Libreoffice и пр.)

Автор izsede, 24 ноября 2022, 22:27

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

sokol92

Цитата: sokol92 от 25 ноября 2022, 15:44напишу баг на эту тему
Создал баг tdf#152238.

Что касается предмета темы, то один из способов создания "двуязычных" модулей - использование того обстоятельства, что LibreOffice Basic (в данный момент) игнорирует операторы условной компиляции VBA. Пример книги Excel во вложении.

' Пример макроса для Excel VBA и Calc Basic.
Sub Test()
   
#If VBA6 = 0 Then
 ' Операторы ниже (до #End If) игнорируются VBA, но работают в LO Basic
 MsgBox "This is LO Basic!"
 Exit Sub
#End If

 MsgBox "This is VBA!"
End Sub
Владимир.

izsede

#16
Цитата: sokol92 от 26 ноября 2022, 19:10Что касается предмета темы, то один из способов создания "двуязычных" модулей - использование того обстоятельства, что LibreOffice Basic (в данный момент) игнорирует операторы условной компиляции VBA.

Здравствуйте sokol92!

По-моему это самое изящное решение моей проблемы. По крайней мере выглядит перспективно. Обязательно попробую использовать этот код в своём файле. Спасибо!  8-)

Кстати, Вы сказали "один из способов.". Возможно Вы знаете еще варианты решения проблемы? Просто интересно. Я же наверняка не первый кто с таким сталкивается.

sokol92

Указанный в #15 метод не является общеупотребительным. :)

Можно и воздержаться от использования операторов условной компиляции. Определяем свое местоположение (код Михаил демонстрировал выше) и далее обычным образом организуем ветвление кода. На мой взгляд, это менее комфортно, поскольку могут возникнуть сложности с компиляцией кода в Excel VBA.
Владимир.

bigor

Объясните непонимающему, вот вы узнали, что макрос запущен на LO, как вы будете реализовывать отсутствующий метод или свойство? Например вот, на .Sort ругается. Вижу 3 варианта:
1. написать баг и ждать пока исправят (долго)
2. писать свой "костыль" сортировки, но тогда этот код будет работающим как в МСО так и в ЛО (и информация о продукте нам не нужна)
3. для ЛО сделать ограниченный вариант, без сортировки (но с учетом что вас пересадят всех на ЛО окажется у всех урезанный функционал)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

Цитата: bigor от 27 ноября 2022, 22:01Вижу 3 варианта

4. Заключить договор поддержки, создать тикет в его рамках и получить исправление (быстро)
(ну и ещё - 5: "писать свой "костыль" сортировки", но используя UNO API)
С уважением,
Михаил Каганский