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

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

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

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Добрый день. В LO Calc созданы несколько макросов, как за...  (Прочитано 572 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ForumOOo (бот)

Offline Offline

Сообщений: 747


« Стартовое сообщение: 22 Октябрь 2020, 07:49 »

Компонент: Calc
Версия продукта: 5.x
Сборка: 4e471d8c02c9c90f512f7f9ead8875b57fcb1ec3
ОС: Win 10, Win 7

Добрый день.

В LO Calc созданы несколько макросов, как запустить один макрос из другого?

Как я понимаю в MSO происходит примерно так:
sub mac()
mac1
mac2
mac3
...
end sub

При попытках провернуть данный трюк в LO ошибки нет, но и нужный макрос не выполняется.

--
Подпись: Gorg
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #1: 22 Октябрь 2020, 09:06 »

Должно выполняться. Можете показать документ или простой образец документа с макросами которые не выполняются?
Записан

Gorg
Участник
**
Offline Offline

Сообщений: 7


« Ответ #2: 22 Октябрь 2020, 09:22 »

Макрос:
Sub Main

If ThisComponent.Sheets(0).getCellByPosition(28, 5).Value < 7 Then
...
End If

Flak

End Sub

Отдельно Flak выполняется.
В макросе игнорируется.
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 22 Октябрь 2020, 09:39 »

Вот так у вас выполняется:
Код:
Sub Main

Flak        'вызов макроса "Flak"

End Sub

Sub Flak

Print "Flak выполнился"

End Sub
Записан

Gorg
Участник
**
Offline Offline

Сообщений: 7


« Ответ #4: 22 Октябрь 2020, 10:02 »

Вот так у вас выполняется:
Код:
Sub Main

Flak        'вызов макроса "Flak"

End Sub

Sub Flak

Print "Flak выполнился"

End Sub
Вот так у вас выполняется:

В этом случае есть всплывающее окно, но сам макрос не выполняется.
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 22 Октябрь 2020, 10:13 »

В этом случае есть всплывающее окно, но сам макрос не выполняется.
Если есть "всплывающее окно", значит макрос вызывается и исполняется.

А если результат выполнения макроса не такой, какой вы ждёте, нужно смотреть на код.
Записан

Gorg
Участник
**
Offline Offline

Сообщений: 7


« Ответ #6: 22 Октябрь 2020, 10:27 »

Вы предлагаете просто копировать код одного макроса в другой и вызывать "последовательно".
Мне интересна возможность запуска макроса из списка, без копирования кода.
Самое интересное отмечено стрелками.


* Mac1.png (156.71 Кб, 1914x1005 - просмотрено 7 раз.)
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 314


« Ответ #7: 22 Октябрь 2020, 10:41 »

Sub Macro1
...
Call Macro2
...
End sub
Записан

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

Сообщений: 7


« Ответ #8: 22 Октябрь 2020, 10:46 »

Sub Macro1
...
Call Macro2
...
End sub

Ситуация та же, ошибок нет, LO все нравиться, но макрос не стартует
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 095



« Ответ #9: 22 Октябрь 2020, 10:57 »

давайте файл, так разговор бесполезный
Записан

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

Сообщений: 1 314


« Ответ #10: 22 Октябрь 2020, 10:58 »

Прогоните макрос по F8 - там наглядно видно переходы и Стек вызовов
Записан

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

Сообщений: 7


« Ответ #11: 22 Октябрь 2020, 11:00 »

Создал чистый документ и 2 макроса:
Module 1
Код:
Sub Main

Call Module2

End Sub

Module 2
Код:
Sub Main

ThisComponent.Sheets(0).getCellByPosition(0,0).SetValue (1)

End Sub

Собственно в А1 ничего не происходит.
Так же пробовал вместо Call Module2 использовать просто Module2, ситуация не меняется - все проходит, ошибок нет, макрос игнорируется.

* Без имени 1.ods (6.88 Кб - загружено 1 раз.)
Записан
Gorg
Участник
**
Offline Offline

Сообщений: 7


« Ответ #12: 22 Октябрь 2020, 11:01 »

Прогоните макрос по F8 - там наглядно видно переходы и Стек вызовов
По F8 вызывает только Main
Записан
Gorg
Участник
**
Offline Offline

Сообщений: 7


« Ответ #13: 22 Октябрь 2020, 11:04 »

Всем большое спасибо!
Тема закрыта. Помогло при добавить .Main

Код:
Sub Main

Module2.Main

End Sub

и

Код:
Sub Main

ThisComponent.Sheets(0).getCellByPosition(0,0).SetValue (1)

End Sub
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #14: 22 Октябрь 2020, 12:45 »

Удобнее поддерживать уникальность имен макросов хотя бы внутри библиотеки.
Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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