#НАЗВАНИЕ? ошибка после открытия таблицы макросом

Я создал и сохранил электронную таблицу, в которой используется макрос для задачи интерполяции. Когда я снова открываю документ, все ячейки, вызывающие функцию, отображаются как #NAME?, хотя документ по-прежнему содержит макрос: Когда я открываю Инструменты | Макросы | Упорядочить макросы... | Основные макросы LibreOffice | (документ) | полезно | Module1 и нажмите «Изменить». Я могу редактировать исходный код, как и раньше.

Кто-нибудь знает, что случилось? Как я могу восстановить свой файл? Я переключил настройку безопасности на «Низкий (не рекомендуется)», просто убедитесь, но только после создания и сохранения файла.


person user829755    schedule 18.10.2014    source источник
comment
Что полезного в вашем пути организации макросов? Если это библиотека, то где она хранится? Почему бы вам просто не сохранить свою пользовательскую функцию в стандартной библиотеке вашего документа?   -  person Axel Richter    schedule 19.10.2014
comment
это помогло! @AxelRichter: в моем вопросе была проблема с форматированием, я ее исправил. util должен был стать библиотекой общих служебных функций. После вашего комментария я заменил модуль Module1 в библиотеке util на модуль util в библиотеке Standard, и теперь он работает. Мне кажется, что это немного преувеличено. Спасибо. Если вы опубликуете это как ответ, я могу принять это.   -  person user829755    schedule 19.10.2014


Ответы (2)


В libreoffice или openoffice basic невозможно запустить определяемую пользователем функцию, которая хранится в библиотеке, кроме стандартных библиотек, как формулу в ячейке. Хотя возможно хранить функции в библиотеках, пользовательские функции должны находиться в стандартных библиотеках. Затем они (определяемые пользователем функции), конечно, могут вызывать функции в библиотеках, если эти библиотеки загружены.

UDF в библиотеках

Пользовательскую функцию можно вызвать в ячейке как =UDF(). UDF2 также может вызываться в ячейке как =UDF2(). Затем он загружает библиотеку «util», если она еще не загружена, и возвращает результат utilUDF().

См. также http://www.openoffice.org/documentation/manuals/userguide3/0312CG3-CalcMacros.pdf#7 «Создание собственных функций», стр. 7–12.

Привет

Аксель

person Axel Richter    schedule 19.10.2014

У меня была такая же проблема с макросом, определенным с помощью Sub Foo. Я изменил это на public function Foo, и это сработало.

NB: после 20 лет разработки программного обеспечения LibreOffice API — самый дрянной из тех, с которыми мне доводилось работать. Документация ужасна, разбросана повсюду, замусорен уйгурскими или полностью отсутствует. IDE макросов LibreOffice также крайне бесполезна.

person Dan Dascalescu    schedule 24.10.2020