Как обратиться к форме?

Автор Al_Ex, 24 мая 2017, 17:34

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

Al_Ex

Есть файл template.xlsm с макросом, сделанный в Экселе, в котором перед стартом нужно вызвать три формы с радиобаттонами, чекбоксами и т.п.
Когда открыл этот файл в Либре - формы работали.
Пересохранил файл в формат template.ods. Структура проекта сохранилась.
Падает на этой строке
ChooseLocale.Show
BASIC runtime error. '423' Show

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

Sub OpenForm
thisComponent.Parent.FormDocuments.getByName("ChooseLocale").open
end Sub


Форма не вызывается, кидает ошибку
BASIC runtime error. '91' Object variable not set

1. Корректно ли сохранять файл шаблона из .xlsm в .ods?
2. Как правильно вызвать форму из макроса? При этом на форме надо сделать выбор несколько значений и нажать ОК, у формы есть свой обработчик.

economist

Броюсь что элементы ActiveX или "старые" NativeExcel - не смогут обрабатываться макросами SB.
Похожие объекты - лучше создать самому заново. Диалоги в OpenOffice|LibreOffice - вообще мутная тема.

Попробуйте в коде выполнить раз ThisComponent.BasicLibraries.VBACompatibilityMode=true 
и переоткрыть приложение.

PS. Из-за дурной природы VBA/SB-модальных окон и ветвления множества событий - каждый подобный раз тупо убираю диалоги и делаю "псевдо-формы" прямо в Calc, в ячейках, на разных листах. По сути - то же самое, только в 4 раза быстрее и уж точно предсказуемее. Заодно можно привлечь помощников - обычных пользователей, умеющих "писать" формулы, усл. форматирование и проверку данных. Они сделают за вас половину работы.     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...