После сохранения в LO xlsm-файла появляются "лишние модули"

Автор Sirius34, 3 июня 2024, 17:06

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

Sirius34

Всем доброго времени суток!

Есть .xlsm-файлы (типовые у разных пользователей) с модулями на открытие книги и
на обработку событий одного из листов.
В конторе имеются компы, как с Windows/Excel, так и с AltLinux/LO.
В какой-то момент .xlsm-файл был сохранен в LO без изменения формата.
После этого сохранения Excel при открытии файла почему-то захотел "восстановить" файл.
Вроде ничего страшного не случилось, модуль на открытие файла работает.
Модуль на события пока отложил, попозже разберусь с ним.
Но вот то, что появились какие-то "лишние пустые модули", количество которых периодически
ещё и увеличивается, вызывает недоумение.
В какой-то момент у одного из пользователей перестал работать скрипт на открытие книги.
Я узнал об этом только сегодня, открыл файл... А там нет ни одного модуля.
Юзер божится, что ничего не удалял (верю, он в принципе не сильно соображает в этом).
Предполагаю, что в какой-то момент количество "лишних" модулей превысило какой-то лимит,
после чего произошла "очистка".
В общем, сейчас экспериментирую, пытаюсь "воссоздать" ситуацию с удалением, чтобы сам баг отловить и попробовать разобраться.
Может, кто сталкивался с подобным?

Возможно, баг уже известен, и есть варианты, как его победить...

economist

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

Sirius34

Цитата: economist от  3 июня 2024, 18:33А покажите такую же картинку
Прикладываю скрин из LO.

ЦитироватьВ какой-то момент .xlsm-файл был сохранен в LO без изменения формата.
Хотел бы пояснить, а то перечитал, и самому непонятно, что написано :)
Обычно с этими файлами работают только в Excel, а в Либре - постольку-поскольку, чаще справочно, но в описанном мной случае в файл были внесены изменения, сотрудник закрыл Либр и подтвердил сохранение в формате Excel, после чего и начались чудеса.

sokol92

#3
Цитата: Sirius34 от  3 июня 2024, 17:06Возможно, баг уже известен
См. tdf#152238.
О вероятной причине (в моей интерпретации  :) ) - там же. А именно: при сохранении в формате xlsm "теряются" кодовые имена книги и листов книги (неописанное в UNO свойство Codename, в Excel свойства Workbook.CodeName и   Worksheet.CodeName). Из-за этого Excel некорректно интерпретирует файл \xl\vbaProject.bin, что выглядит как задвоение объектов и при дальнейшей работе в Excel може привести файл книги в нерабочее состояние.
Владимир.

economist

Согласен с sokol92, сталкивался и сам много раз. Файл может крякнуть в Excel спустя годы. А характерным признаком является знаки ??? вместо имён кириллических Листов в VBE  (почему и попросил второй скрин).

Лучше не дожидаясь аварии пересоздать файл (листы скопировать, именовать латиницей, настроить умолчания и рекомендации формата, написать макрос, проверяющий перед сохранением: в Calc или Excel открыт файл. Но либра 4 все равно портит файл и с этими предосторожностями. Нужны оргмеры.

Два файла, два формата, два приложения - и ничего ломаться не будет. Организовать легко, если есть приоритет чего-то одного. Например, топ-менеджеры в Excel "живут" и пытаются открыть в нем всё подряд, от архивов до биткоин-кошельков.  Но они ничего не вводят, а значит можно просто отразить один файл в другом. Можно зеркалить данные через Base итд.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Sirius34

sokol92
economist
Благодарю за информацию. Отрицательный результат - тоже результат, хоть и не очень радостный.
Будем колхозить...