Макросы автоматического пересчета прайса

Автор Alexcostariha, 18 февраля 2014, 21:32

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

Alexcostariha

 Добрый день! У меня LibreOffice 4.0.2.2 на Linux Mint Rosinka.
Я получаю прайсы с функцией автоматического пересчета торговой наценки(макросами). В данной версии моей системы они не функционируют, а впредыдущей все было отлично.
Подозреваю, что не установлен какой-то пакет Libreoffice. Есть какие-нибудь соображения?
Я долго мучался и выдавил из своей системы сообщение об ошибке в виде:
                                     Ошибка времени выполнения BASIC.
                                     '91'
                                     Переменная типа Object не установлена.

См. во вложении.

[вложение удалено Администратором]

JohnSUN

Добро пожаловать на форум!
Без текста макроса сообщение об ошибке ничего не говорит. Вот если бы скриншот включал в себя ещё и фрагмент кода, на котором макрос споткнулся - можно было бы попытаться помочь...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alexcostariha

Не подскажете как его извлечь - текст кода. У меня еще есть скриншот - может это оно?

[вложение удалено Администратором]

JohnSUN

Цитата: Alexcostariha от 20 февраля 2014, 08:30
Не подскажете как его извлечь - текст кода.
Ну, есть как минимум три способа. Для начала нужно остановить макрос (нажать ОК во всплывшем окне), а потом:
1. Или в окне редактирования макроса выделить всё и просто через скопировать-вставить перенести в окно сообщения на форуме. Чтобы текст не слился с текстом сообщения, нажать кнопку Код над текстом сообщения(с "решеткой" которая)
2. Или нажать кнопку "Сохранить макрос" над текстом макроса (кажется, предпоследняя) и получившийся файл приложить к сообщению
3. Или приложить к сообщению весь файл NEW_PRICE_EVANTY_XXX.xls, предварительно подменив конфиденциальные данные на какие-то "фальшивые", похожие на настоящие (если они там есть, разумеется).
Но всё это, похоже, уже не нужно, поскольку:
Цитата: Alexcostariha от 20 февраля 2014, 08:30У меня еще есть скриншот - может это оно?
Да, это оно. И из фрагмента кода, который виден на скриншоте, уже понятно что быстро и просто "исправить" макрос не получится.
Дело в том, что бэйсики экселя (VBA) и OpenOffic'а (StarBasic) сильно различаются. Есть возможность написать макрос, который будет одинаково работать и под тем, и под другим офисом, но для этого надо минимально использовать специфические особенности языков. В данном случае макрос CommandButton1_Click, на котором и выскакивает ошибка, активно использует возможность VBA напрямую обращаться к объектам рабочей книги. В данном случае - к листу с внутренним именем Лист3 и полям ввода. В модели данных ОО используется другой механизм доступа к объектам.
К сожалению, в таком виде запустить макрос под ОО не выйдет, его нужно переписывать полностью.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне