1

У меня случайные макроповреждения, когда я не могу открыть книгу.

Мне пришлось бы отключить все макросы без уведомлений, затем открыть книгу и перекомпилировать макросы, сохранить закрыть. Затем включите макросы и откройте рабочую книгу, после чего рабочая книга откроется нормально. Это почти как обновление макросов, помогающее снова открыть книгу. Я проверил некоторые из моих модулей, и некоторые из них имеют размер более 64 КБ. Я прочитал несколько статей, касающихся ограничений на размер модуля, который вызывает повреждение.

Кто-нибудь проверяет, является ли это также для Excel 365 или какие-либо причины для повреждения макросов?

1 ответ1

1

Ограничение в 64 КБ зависит не от размера экспортируемого файла, а от максимального размера скомпилированного модуля.

Если ваш модуль меньше 10K строк, если можно скомпилировать.

Тяжелый, но, вероятно, все еще исправный модуль будет иметь размер 1 Кб, вершин, которые, похоже, колеблются около 40 КБ при экспорте в текстовый файл; 64KB не поражает меня , как совершенно неприлично, хотя это, безусловно , выше 1К строк кода, и , таким образом, вероятно , может использовать некоторые хитрости.

Если ваши модули названы, например, Module8 или Utilities , проверьте, насколько сплочены их члены - все ли они связаны с одной и той же функциональностью? Или кажется, что туда были сброшены случайные функции?

Ищите повторный код, реорганизуйте его. Извлекайте методы, параметризуйте их, наблюдайте, как ваш модуль растает, сохраняя при этом всю его функциональность.

Механика внутреннего хранилища для кода VBA не изменилась за 20 лет - я не вижу причин для того, чтобы это изменилось в последнее время, тем более что VBA в значительной степени замерзла, и изменение чего-либо в механике хранилища сломало бы миллионы вещи повсюду.

Но, не исключено, что что-то в O365 было недавно изменено (вы используете сборку Insider ?), И что-то сломалось, и ваша книга каким-то образом испортилась ... но если ваш модуль немного выше 64 КБ исходного текста, это очень вряд ли это будет связано: скомпилированный код будет намного меньше, чем ... при условии компиляции проекта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .